20000514-09:10 GMT-8 Ron Pinkas <Ron@Profit-Master.com>
* source/compiler/harbour.l
! Fixed parse error when DO OPTIONAL WITH ...
* Changed FROM to FROM CLASS in AS Obect FROM CLASS ... (fixed conflict of FROM with DO FROM ...)
* Changed AS ... ARRAY to AS ARRAY OF ...
This commit is contained in:
@@ -1,7 +1,14 @@
|
||||
20000514-09:10 GMT-8 Ron Pinkas <Ron@Profit-Master.com>
|
||||
|
||||
* source/compiler/harbour.l
|
||||
! Fixed parse error when DO OPTIONAL WITH ...
|
||||
* Changed FROM to FROM CLASS in AS Obect FROM CLASS ... (fixed conflict of FROM with DO FROM ...)
|
||||
* Changed AS ... ARRAY to AS ARRAY OF ...
|
||||
|
||||
20000514-14:55 GMT+1 Ryszard Glab <rglab@imid.med.pl>
|
||||
|
||||
*source/compiler/harbour.y
|
||||
* fixed bug in line counting that was causing no code
|
||||
* fixed bug in line counting that was causing no code
|
||||
generated for statements placed within BEGIN/END SEQUENCE
|
||||
|
||||
20000513-14:50 GMT+1 Ryszard Glab <rglab@imid.med.pl>
|
||||
@@ -9,7 +16,7 @@
|
||||
*include/hbcomp.h
|
||||
* added 'int iDeclLine' to VAR structure to hold the line number
|
||||
where a variable was declared
|
||||
|
||||
|
||||
*source/compiler/harbour.c
|
||||
*source/compiler/harbour.y
|
||||
* fixed generation of 'unreachable code' warnings
|
||||
|
||||
@@ -113,7 +113,7 @@ Separator {SpaceTab}
|
||||
%x FOR_ FUNCTION_ IIF_ IF_ IN_ INIT_ LOCAL_ LOOP_
|
||||
%x MEMVAR_ PARAM_ PRIVATE_ PUBLIC_ STATIC_ RETURN_ RECOVER_
|
||||
%x INVALIDNUM_ OTHERWISE_ PROCEDURE_
|
||||
%x OPTIONAL_ FROMCLASS_
|
||||
%x OPTIONAL_
|
||||
%s INDEX
|
||||
|
||||
%%
|
||||
@@ -359,7 +359,21 @@ Separator {SpaceTab}
|
||||
%}
|
||||
|
||||
<INITIAL>"optional" { BEGIN OPTIONAL_; }
|
||||
|
||||
<OPTIONAL_>{Separator}+"with"{Separator}+[_a-zA-Z\&] { unput( yytext[ yyleng-1 ] );
|
||||
unput( ' ' );
|
||||
unput( 'h' );
|
||||
unput( 't' );
|
||||
unput( 'i' );
|
||||
unput( 'w' );
|
||||
if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0;
|
||||
yylval.string = hb_strdup( "OPTIONAL" );
|
||||
hb_comp_iState = IDENTIFIER;
|
||||
return IDENTIFIER;
|
||||
}
|
||||
|
||||
<OPTIONAL_>{Separator}+[_a-zA-Z\&] { unput( yytext[ yyleng-1 ] ); BEGIN 0; return OPTIONAL; }
|
||||
|
||||
<OPTIONAL_>{Separator}*(.|\n) { /* end of line or any operator */
|
||||
if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0;
|
||||
unput( yytext[ yyleng-1 ] );
|
||||
@@ -368,16 +382,6 @@ Separator {SpaceTab}
|
||||
return IDENTIFIER;
|
||||
}
|
||||
|
||||
<INITIAL>"from" { BEGIN FROMCLASS_; }
|
||||
<FROMCLASS_>{Separator}+[_a-zA-Z\&] { unput( yytext[ yyleng-1 ] ); BEGIN 0; return FROMCLASS; }
|
||||
<FROMCLASS_>{Separator}*(.|\n) { /* end of line or any operator */
|
||||
if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0;
|
||||
unput( yytext[ yyleng-1 ] );
|
||||
yylval.string = hb_strdup( "FROM" );
|
||||
hb_comp_iState = IDENTIFIER;
|
||||
return IDENTIFIER;
|
||||
}
|
||||
|
||||
"do" BEGIN DO_;
|
||||
<DO_>{Separator}+"case" { /* DO CASE statement */
|
||||
if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0;
|
||||
@@ -1334,26 +1338,28 @@ Separator {SpaceTab}
|
||||
"as var" { return AS_VARIANT; }
|
||||
"as variant" { return AS_VARIANT; }
|
||||
|
||||
"as var array" { return AS_ARRAY; }
|
||||
"as variant array" { return AS_ARRAY; }
|
||||
"as array array" { return AS_ARRAY_ARRAY; }
|
||||
"as block array" { return AS_BLOCK_ARRAY; }
|
||||
"as char array" { return AS_CHARACTER_ARRAY; }
|
||||
"as character array" { return AS_CHARACTER_ARRAY; }
|
||||
"as string array" { return AS_CHARACTER_ARRAY; }
|
||||
"as date array" { return AS_DATE_ARRAY; }
|
||||
"as logical array" { return AS_LOGICAL_ARRAY; }
|
||||
"as bool array" { return AS_LOGICAL_ARRAY; }
|
||||
"as boolean array" { return AS_LOGICAL_ARRAY; }
|
||||
"as num array" { return AS_NUMERIC_ARRAY; }
|
||||
"as numeric array" { return AS_NUMERIC_ARRAY; }
|
||||
"as object array" { return AS_OBJECT_ARRAY; }
|
||||
"as array of var" { return AS_ARRAY; }
|
||||
"as array of variant" { return AS_ARRAY; }
|
||||
"as array of array" { return AS_ARRAY_ARRAY; }
|
||||
"as array of block" { return AS_BLOCK_ARRAY; }
|
||||
"as array of char" { return AS_CHARACTER_ARRAY; }
|
||||
"as array of character" { return AS_CHARACTER_ARRAY; }
|
||||
"as array of string" { return AS_CHARACTER_ARRAY; }
|
||||
"as array of date" { return AS_DATE_ARRAY; }
|
||||
"as array of logical" { return AS_LOGICAL_ARRAY; }
|
||||
"as array of bool" { return AS_LOGICAL_ARRAY; }
|
||||
"as array of boolean" { return AS_LOGICAL_ARRAY; }
|
||||
"as array of num" { return AS_NUMERIC_ARRAY; }
|
||||
"as array of numeric" { return AS_NUMERIC_ARRAY; }
|
||||
"as array of object" { return AS_OBJECT_ARRAY; }
|
||||
|
||||
"declare function" { return DECLARE_FUN; }
|
||||
"declare class" { return DECLARE_CLASS; }
|
||||
"has method" { return CLASS_METHOD; }
|
||||
"has data" { return CLASS_DATA; }
|
||||
|
||||
"from class" { return FROMCLASS; }
|
||||
|
||||
%{
|
||||
/* ************************************************************************ */
|
||||
%}
|
||||
|
||||
@@ -7,24 +7,24 @@
|
||||
#pragma -es0
|
||||
#else
|
||||
|
||||
#TRANSLATE AS CHAR ARRAY =>
|
||||
#TRANSLATE AS CHARACTER ARRAY =>
|
||||
#TRANSLATE AS STRING ARRAY =>
|
||||
#TRANSLATE AS ARRAY OF CHAR =>
|
||||
#TRANSLATE AS ARRAY OF CHARACTER =>
|
||||
#TRANSLATE AS ARRAY OF STRING =>
|
||||
|
||||
#TRANSLATE AS NUM ARRAY =>
|
||||
#TRANSLATE AS NUMERIC ARRAY =>
|
||||
#TRANSLATE AS ARRAY OF NUM =>
|
||||
#TRANSLATE AS ARRAY OF NUMERIC =>
|
||||
|
||||
#TRANSLATE AS DATE ARRAY =>
|
||||
#TRANSLATE AS ARRAY ARRAY =>
|
||||
#TRANSLATE AS BLOCK ARRAY =>
|
||||
#TRANSLATE AS OBJECT ARRAY =>
|
||||
#TRANSLATE AS ARRAY OF DATE =>
|
||||
#TRANSLATE AS ARRAY OF ARRAY =>
|
||||
#TRANSLATE AS ARRAY OF BLOCK =>
|
||||
#TRANSLATE AS ARRAY OF OBJECT =>
|
||||
|
||||
#TRANSLATE AS BOOL ARRAY =>
|
||||
#TRANSLATE AS BOOLEAN ARRAY =>
|
||||
#TRANSLATE AS LOGICAL ARRAY =>
|
||||
#TRANSLATE AS ARRAY OF BOOL =>
|
||||
#TRANSLATE AS ARRAY OF BOOLEAN =>
|
||||
#TRANSLATE AS ARRAY OF LOGICAL =>
|
||||
|
||||
#TRANSLATE AS VAR ARRAY =>
|
||||
#TRANSLATE AS VARIANT ARRAY =>
|
||||
#TRANSLATE AS ARRAY OF VAR =>
|
||||
#TRANSLATE AS ARRAY OF VARIANT =>
|
||||
|
||||
|
||||
#TRANSLATE AS CHAR =>
|
||||
@@ -61,7 +61,7 @@ DECLARE FUNCTION int( n AS NUMERIC ) AS NUMERIC
|
||||
|
||||
DECLARE FUNCTION TEST AS NUMERIC
|
||||
|
||||
DECLARE CLASS MyClass ;
|
||||
DECLARE CLASS MyClass ;
|
||||
Has METHOD nMyFunc( nVal As Num ) As Num ;
|
||||
Has METHOD nMyFunc( nVal As Num ) As Num ;
|
||||
Has Data cMyData ;
|
||||
@@ -76,7 +76,7 @@ STATIC lGlobal AS LOGICAL
|
||||
|
||||
PROCEDURE THEMAIN( optional )
|
||||
|
||||
STATIC lStatic := 0, oMyObj As Object From WrongClass
|
||||
STATIC lStatic := 0, oMyObj As Object From CLASS WrongClass
|
||||
LOCAL cVar AS CHAR := [declare function]
|
||||
|
||||
oMyObj:MyMethod( 2, 3, 4 )
|
||||
@@ -89,9 +89,11 @@ PROCEDURE THEMAIN( optional )
|
||||
|
||||
PRIVATE TEST AS CHAR
|
||||
|
||||
DO Optional WITH cVar
|
||||
|
||||
FOR Conter := 1 TO 10
|
||||
? "For with End"
|
||||
NEXT
|
||||
End
|
||||
|
||||
IF optional
|
||||
? 'Ok'
|
||||
@@ -129,7 +131,7 @@ PROCEDURE SOMEPROC()
|
||||
|
||||
REPLACE a WITH 1
|
||||
|
||||
M->public_var := 0 //core dumps (GPF) on Linux
|
||||
//M->public_var := 0 //core dumps (GPF) on Linux
|
||||
|
||||
b := 0
|
||||
|
||||
@@ -172,7 +174,7 @@ Return( NIL )
|
||||
|
||||
FUNCTION Main3()
|
||||
|
||||
LOCAL n AS NUMERIC, cVar AS CHARACTER, a[5,5,5] AS CHARACTER ARRAY
|
||||
LOCAL n AS NUMERIC, cVar AS CHARACTER, a[5,5,5] AS ARRAY OF Char
|
||||
|
||||
cVar := a[1]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user