2000-08-09 17:15 UTC+0800 Ron Pinkas <ron@profit-master.com>
* source/compiler/simplex.c
* Minor improvements.
* source/compiler/harbour.slx
- Removed un-needed cases in hb_lex_CustomAction() added by Ryszard.
- Removed 1 rule each for WHILE CASE BREAK and RETURN to default trailing '[' to string delimiter.
* tests/keywords.prg
* Corrected few lines that had '[' as Array Index to String Delimiter after CASE, BREAK etc.
/* Note keywords.prg should now be valid other than 3 (old) correct errors to do with FIELD*/
SimpLex based harbour does compile it correctly Flex reports 26 incorrect errors.
This commit is contained in:
@@ -1,3 +1,17 @@
|
||||
2000-08-09 17:15 UTC+0800 Ron Pinkas <ron@profit-master.com>
|
||||
* source/compiler/simplex.c
|
||||
* Minor improvements.
|
||||
|
||||
* source/compiler/harbour.slx
|
||||
- Removed un-needed cases in hb_lex_CustomAction() added by Ryszard.
|
||||
- Removed 1 rule each for WHILE CASE BREAK and RETURN to default trailing '[' to string delimiter.
|
||||
|
||||
* tests/keywords.prg
|
||||
* Corrected few lines that had '[' as Array Index to String Delimiter after CASE, BREAK etc.
|
||||
|
||||
/* Note keywords.prg should now be valid other than 3 (old) correct errors to do with FIELD*/
|
||||
SimpLex based harbour does compile it correctly Flex reports 26 incorrect errors.
|
||||
|
||||
2000-08-09 15:30 UTC-0400 David G. Holm <dholm@jsd-llc.com>
|
||||
|
||||
* source/pp/ppcore.c
|
||||
@@ -7,7 +21,7 @@
|
||||
2000-08-09 14:15 UTC+0100 Ryszard Glab <rglab@imid.med.pl>
|
||||
|
||||
*source/compiler/harbour.slx
|
||||
* fixed to work with current syntax rules in harbour.y
|
||||
* fixed to work with current syntax rules in harbour.y
|
||||
|
||||
2000-08-09 07:10 GMT-3 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
*doc/en/sayget.txt
|
||||
|
||||
@@ -140,23 +140,26 @@ SELF_CONTAINED_WORDS_ARE {
|
||||
#define HB_FIELD -1010
|
||||
#define HB_PARAM -1011
|
||||
#define HB_FOR -1012
|
||||
#define HB_OPTIONAL -1013
|
||||
|
||||
/* When 2 identifiers are correct syntax like in class declaration, we have to temporarily store the 2nd identifier. */
|
||||
/*
|
||||
#define HB_ID_ON_HOLD -1013
|
||||
#define HB_ID_ON_HOLD -1015
|
||||
*/
|
||||
|
||||
#define HB_MACRO_ERR -1014
|
||||
#define HB_MACRO_ERR -1016
|
||||
|
||||
#define HB_CHK_NEXT -1015
|
||||
#define HB_CHK_EXIT -1016
|
||||
#define HB_CHK_LOOP -1017
|
||||
#define HB_CHK_IN -1018
|
||||
#define HB_CHK_NEXT -1017
|
||||
#define HB_CHK_EXIT -1018
|
||||
#define HB_CHK_LOOP -1019
|
||||
#define HB_CHK_IN -1020
|
||||
|
||||
#define HB_INIT_PROC -1019
|
||||
#define HB_EXIT_PROC -1020
|
||||
#define HB_INIT_FUNC -1021
|
||||
#define HB_EXIT_FUNC -1022
|
||||
#define HB_INIT_PROC -1021
|
||||
#define HB_EXIT_PROC -1022
|
||||
#define HB_INIT_FUNC -1023
|
||||
#define HB_EXIT_FUNC -1024
|
||||
|
||||
#define HB_RET_FUNID -1025
|
||||
|
||||
/* Key Words. */
|
||||
LANGUAGE_KEY_WORDS_ARE {
|
||||
@@ -230,7 +233,7 @@ LANGUAGE_WORDS_ARE {
|
||||
LEX_WORD( "WHILE" ) AS_TOKEN( _WHILE_ ),
|
||||
LEX_WORD( "SEQUENCE" ) AS_TOKEN( _SEQUENCE_ ),
|
||||
LEX_WORD( "USING" ) AS_TOKEN( _USING_ ),
|
||||
LEX_WORD( "OPTIONAL" ) AS_TOKEN( OPTIONAL ),
|
||||
LEX_WORD( "OPTIONAL" ) AS_TOKEN( HB_OPTIONAL ),
|
||||
LEX_WORD( "NIL" ) AS_TOKEN( NIL ),
|
||||
LEX_WORD( "IIF" ) AS_TOKEN( IIF ),
|
||||
LEX_WORD( "TO" ) AS_TOKEN( TO ),
|
||||
@@ -363,7 +366,7 @@ LANGUAGE_RULES_ARE {
|
||||
|
||||
/* Commands and Statements (Key Words only match at <BOL> ). */
|
||||
|
||||
IF_SEQUENCE_IS( FUNCTION , IDENTIFIER , 0 , 0 ) PASS_THROUGH(),
|
||||
IF_SEQUENCE_IS( FUNCTION , IDENTIFIER , 0 , 0 ) REDUCE_TO( HB_RET_FUNID , 0 ),
|
||||
IF_SEQUENCE_IS( FUNCTION , '[' , 0 , 0 ) REDUCE_TO( HB_FUNCTION_ID , '[' ),
|
||||
IF_SEQUENCE_IS( FUNCTION , 0 , 0 , 0 ) REDUCE_TO( HB_FUNCTION_ID , 0 ),
|
||||
|
||||
@@ -501,7 +504,7 @@ LANGUAGE_RULES_ARE {
|
||||
IF_SEQUENCE_IS( RETURN , DIVEQ , 0 , 0 ) REDUCE_TO( HB_RETURN_ID , DIVEQ ),
|
||||
IF_SEQUENCE_IS( RETURN , EXPEQ , 0 , 0 ) REDUCE_TO( HB_RETURN_ID , EXPEQ ),
|
||||
IF_SEQUENCE_IS( RETURN , MODEQ , 0 , 0 ) REDUCE_TO( HB_RETURN_ID , MODEQ ),
|
||||
IF_SEQUENCE_IS( RETURN , '[' , 0 , 0 ) REDUCE_TO( HB_RETURN_ID , '[' ),
|
||||
/* IF_SEQUENCE_IS( RETURN , '[' , 0 , 0 ) REDUCE_TO( HB_RETURN_ID , '[' ), */
|
||||
IF_SEQUENCE_IS( RETURN , '=' , 0 , 0 ) REDUCE_TO( HB_RETURN_ID , '=' ),
|
||||
IF_SEQUENCE_IS( RETURN , ':' , 0 , 0 ) REDUCE_TO( HB_RETURN_ID , ':' ),
|
||||
IF_SEQUENCE_IS( RETURN , 0 , 0 , 0 ) PASS_THROUGH(),
|
||||
@@ -559,7 +562,7 @@ LANGUAGE_RULES_ARE {
|
||||
IF_SEQUENCE_IS( BREAK , EXPEQ , 0 , 0 ) REDUCE_TO( HB_BREAK_ID , EXPEQ ),
|
||||
IF_SEQUENCE_IS( BREAK , MODEQ , 0 , 0 ) REDUCE_TO( HB_BREAK_ID , MODEQ ),
|
||||
IF_SEQUENCE_IS( BREAK , '(' , 0 , 0 ) REDUCE_TO( HB_BREAK_ID , '(' ),
|
||||
IF_SEQUENCE_IS( BREAK , '[' , 0 , 0 ) REDUCE_TO( HB_BREAK_ID , '[' ),
|
||||
/* IF_SEQUENCE_IS( BREAK , '[' , 0 , 0 ) REDUCE_TO( HB_BREAK_ID , '[' ), */
|
||||
IF_SEQUENCE_IS( BREAK , '=' , 0 , 0 ) REDUCE_TO( HB_BREAK_ID , '=' ),
|
||||
IF_SEQUENCE_IS( BREAK , ':' , 0 , 0 ) REDUCE_TO( HB_BREAK_ID , ':' ),
|
||||
IF_SEQUENCE_IS( BREAK , 0 , 0 , 0 ) PASS_THROUGH(),
|
||||
@@ -603,8 +606,8 @@ LANGUAGE_RULES_ARE {
|
||||
IF_SEQUENCE_IS( WHILE , DIVEQ , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , DIVEQ ),
|
||||
IF_SEQUENCE_IS( WHILE , EXPEQ , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , EXPEQ ),
|
||||
IF_SEQUENCE_IS( WHILE , MODEQ , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , MODEQ ),
|
||||
/* IF_SEQUENCE_IS( WHILE , '(' , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , '(' ), */
|
||||
IF_SEQUENCE_IS( WHILE , '[' , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , '[' ),
|
||||
/* IF_SEQUENCE_IS( WHILE , '(' , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , '(' ),
|
||||
IF_SEQUENCE_IS( WHILE , '[' , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , '[' ), */
|
||||
IF_SEQUENCE_IS( WHILE , '=' , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , '=' ),
|
||||
IF_SEQUENCE_IS( WHILE , ':' , 0 , 0 ) REDUCE_TO( HB_WHILE_ID , ':' ),
|
||||
IF_SEQUENCE_IS( WHILE , 0 , 0 , 0 ) PASS_THROUGH(),
|
||||
@@ -626,8 +629,8 @@ LANGUAGE_RULES_ARE {
|
||||
IF_SEQUENCE_IS( CASE , DIVEQ , 0 , 0 ) REDUCE_TO( HB_CASE_ID , DIVEQ ),
|
||||
IF_SEQUENCE_IS( CASE , EXPEQ , 0 , 0 ) REDUCE_TO( HB_CASE_ID , EXPEQ ),
|
||||
IF_SEQUENCE_IS( CASE , MODEQ , 0 , 0 ) REDUCE_TO( HB_CASE_ID , MODEQ ),
|
||||
/* IF_SEQUENCE_IS( CASE , '(' , 0 , 0 ) REDUCE_TO( HB_CASE_ID , '(' ), */
|
||||
IF_SEQUENCE_IS( CASE , '[' , 0 , 0 ) REDUCE_TO( HB_CASE_ID , '[' ),
|
||||
/* IF_SEQUENCE_IS( CASE , '(' , 0 , 0 ) REDUCE_TO( HB_CASE_ID , '(' ),
|
||||
IF_SEQUENCE_IS( CASE , '[' , 0 , 0 ) REDUCE_TO( HB_CASE_ID , '[' ), */
|
||||
IF_SEQUENCE_IS( CASE , '=' , 0 , 0 ) REDUCE_TO( HB_CASE_ID , '=' ),
|
||||
IF_SEQUENCE_IS( CASE , ':' , 0 , 0 ) REDUCE_TO( HB_CASE_ID , ':' ),
|
||||
IF_SEQUENCE_IS( CASE , 0 , 0 , 0 ) PASS_THROUGH(),
|
||||
@@ -664,6 +667,25 @@ LANGUAGE_RULES_ARE {
|
||||
|
||||
/* ---------------------- End of: DO WHILE; WHILE ; DO CASE ; CASE; DO ... ; DO ... WITH ------------------- */
|
||||
|
||||
/* This IF is only at BOL if followed by operator (other than logicals .t., .f., !) than Identifier else IF. */
|
||||
IF_SEQUENCE_IS( IF , INASSIGN , 0 , 0 ) REDUCE_TO( HB_IF_ID , INASSIGN ),
|
||||
IF_SEQUENCE_IS( IF , INC , '\n' , 0 ) REDUCE_TO( HB_IF_ID , _INC_CR ),
|
||||
IF_SEQUENCE_IS( IF , INC , ';' , 0 ) REDUCE_TO( HB_IF_ID , _INC_SEMI ),
|
||||
IF_SEQUENCE_IS( IF , DEC , '\n' , 0 ) REDUCE_TO( HB_IF_ID , _DEC_CR ),
|
||||
IF_SEQUENCE_IS( IF , DEC , ';' , 0 ) REDUCE_TO( HB_IF_ID , _DEC_SEMI ),
|
||||
IF_SEQUENCE_IS( IF , ALIASOP , 0 , 0 ) REDUCE_TO( HB_IF_ID , ALIASOP ),
|
||||
IF_SEQUENCE_IS( IF , PLUSEQ , 0 , 0 ) REDUCE_TO( HB_IF_ID , PLUSEQ ),
|
||||
IF_SEQUENCE_IS( IF , MINUSEQ , 0 , 0 ) REDUCE_TO( HB_IF_ID , MINUSEQ ),
|
||||
IF_SEQUENCE_IS( IF , MULTEQ , 0 , 0 ) REDUCE_TO( HB_IF_ID , MULTEQ ),
|
||||
IF_SEQUENCE_IS( IF , DIVEQ , 0 , 0 ) REDUCE_TO( HB_IF_ID , DIVEQ ),
|
||||
IF_SEQUENCE_IS( IF , EXPEQ , 0 , 0 ) REDUCE_TO( HB_IF_ID , EXPEQ ),
|
||||
IF_SEQUENCE_IS( IF , MODEQ , 0 , 0 ) REDUCE_TO( HB_IF_ID , MODEQ ),
|
||||
/* IF_SEQUENCE_IS( IF , '(' , 0 , 0 ) REDUCE_TO( HB_IF_ID , '(' ),
|
||||
IF_SEQUENCE_IS( IF , '[' , 0 , 0 ) REDUCE_TO( HB_IF_ID , '[' ), */
|
||||
IF_SEQUENCE_IS( IF , '=' , 0 , 0 ) REDUCE_TO( HB_IF_ID , '=' ),
|
||||
IF_SEQUENCE_IS( IF , ':' , 0 , 0 ) REDUCE_TO( HB_IF_ID , ':' ),
|
||||
IF_SEQUENCE_IS( IF , 0 , 0 , 0 ) PASS_THROUGH(),
|
||||
|
||||
IF_SEQUENCE_IS( PROCREQ_ , '(' , 0 , 0 ) REDUCE_TO( PROCREQ , 0 ),
|
||||
IF_SEQUENCE_IS( PROCREQ_ , '[' , 0 , 0 ) REDUCE_TO( HB_PROCREQ_ID , '[' ),
|
||||
IF_SEQUENCE_IS( PROCREQ_ , 0 , 0 , 0 ) REDUCE_TO( HB_PROCREQ_ID , 0 ),
|
||||
@@ -699,50 +721,8 @@ LANGUAGE_RULES_ARE {
|
||||
IF_SEQUENCE_IS( IIF , '[' , 0 , 0 ) REDUCE_TO( HB_IIF_ID , '[' ),
|
||||
IF_SEQUENCE_IS( IIF , 0 , 0 , 0 ) REDUCE_TO( HB_IIF_ID , 0 ),
|
||||
|
||||
IF_SEQUENCE_IS( OPTIONAL , _AS_ , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , _AS_ ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , TO , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , TO ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , TRUEVALUE , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , TRUEVALUE ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , FALSEVALUE , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , FALSEVALUE ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , NOT , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , NOT ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , AND , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , AND ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , OR , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , OR ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , INASSIGN , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , INASSIGN ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , EQ , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , EQ ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , NE2 , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , NE2 ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , INC , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , INC ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , DEC , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , DEC ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , ALIASOP , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , ALIASOP ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , LE , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , LE ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , GE , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , GE ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , PLUSEQ , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , PLUSEQ ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , MINUSEQ , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , MINUSEQ ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , MULTEQ , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , MULTEQ ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , DIVEQ , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , DIVEQ ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , POWER , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , POWER ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , EXPEQ , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , EXPEQ ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , MODEQ , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , MODEQ ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '!' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '!' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '<' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '<' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '>' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '>' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '(' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '(' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '[' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '[' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , ']' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , ']' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '-' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '-' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '+' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '+' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '*' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '*' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '/' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '/' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '^' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '^' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '%' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '%' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , ':' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , ':' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '=' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '=' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , ',' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , ',' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '$' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '$' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , ')' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , ')' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '}' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '}' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '|' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '|' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , '\n' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , '\n' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , ';' , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , ';' ),
|
||||
IF_SEQUENCE_IS( OPTIONAL , 0 , 0 , 0 ) PASS_THROUGH(),
|
||||
IF_SEQUENCE_IS( OPTIONAL , IDENTIFIER , 0 , 0 ) PASS_THROUGH(),
|
||||
IF_SEQUENCE_IS( OPTIONAL , 0 , 0 , 0 ) REDUCE_TO( HB_OPTIONAL_ID , 0 ),
|
||||
|
||||
IF_SEQUENCE_IS( '&' , '\'' , 0 , 0 ) REDUCE_TO( HB_MACRO_ERR , 0 ),
|
||||
IF_SEQUENCE_IS( '&' , '"' , 0 , 0 ) REDUCE_TO( HB_MACRO_ERR , 0 ),
|
||||
@@ -1165,6 +1145,14 @@ int hb_lex_CustomAction( int x, int iWordLen, int aiHold[], int *ptr_iHold, BOOL
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case HB_OPTIONAL :
|
||||
*ptr_bIgnoreWords = TRUE;
|
||||
|
||||
aiHold[ (*ptr_iHold)++ ] = OPTIONAL;
|
||||
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case HB_CHK_NEXT :
|
||||
if( hb_comp_wForCounter == 0 )
|
||||
hb_compGenError( hb_comp_szErrors, 'E', HB_COMP_ERR_NEXTFOR, NULL, NULL );
|
||||
@@ -1226,6 +1214,14 @@ int hb_lex_CustomAction( int x, int iWordLen, int aiHold[], int *ptr_iHold, BOOL
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case HB_RET_FUNID :
|
||||
/* iIdentifier++; */
|
||||
aiReturn[ (*ptr_iReturn)++ ] = IDENTIFIER;
|
||||
aiReturn[ (*ptr_iReturn)++ ] = FUNCTION;
|
||||
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case HB_EXTERN_ID :
|
||||
strncpy( (char*) sIdentifier, "EXTERNAL", iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
@@ -1441,66 +1437,6 @@ int hb_lex_CustomAction( int x, int iWordLen, int aiHold[], int *ptr_iHold, BOOL
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
x = IDENTIFIER;
|
||||
break;
|
||||
|
||||
case OPTIONAL :
|
||||
strncpy( (char*) sIdentifier, "OPTIONAL" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case EXTERN :
|
||||
strncpy( (char*) sIdentifier, "EXTERNAL" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case ANNOUNCE :
|
||||
strncpy( (char*) sIdentifier, "ANNOUNCE" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case LOCAL :
|
||||
strncpy( (char*) sIdentifier, "LOCAL" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case MEMVAR :
|
||||
strncpy( (char*) sIdentifier, "MEMVAR" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case STATIC :
|
||||
strncpy( (char*) sIdentifier, "STATIC" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case PRIVATE :
|
||||
strncpy( (char*) sIdentifier, "PRIVATE" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case PUBLIC :
|
||||
strncpy( (char*) sIdentifier, "PUBLIC" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case PARAMETERS :
|
||||
strncpy( (char*) sIdentifier, "PARAMETERS" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case PROCREQ :
|
||||
strncpy( (char*) sIdentifier, "PROCREQ" , iWordLen );
|
||||
sIdentifier[iWordLen] = '\0';
|
||||
yylval.string = hb_compIdentifierNew( (char*) sIdentifier, TRUE );
|
||||
break;
|
||||
|
||||
case HB_IN_ID :
|
||||
strcpy( (char*) sIdentifier, "IN" );
|
||||
|
||||
@@ -317,6 +317,8 @@ int Reduce( int iToken, BOOL bReal );
|
||||
{ \
|
||||
DEBUG_INFO( printf( "Reducing Self >%s<\n", sSelf ) ); \
|
||||
\
|
||||
bIgnoreWords = FALSE;\
|
||||
\
|
||||
if( bNewLine )\
|
||||
{\
|
||||
bNewLine = FALSE;\
|
||||
@@ -443,10 +445,6 @@ int Reduce( int iToken, BOOL bReal );
|
||||
{\
|
||||
bNewLine = TRUE;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
bNewLine = FALSE;\
|
||||
}\
|
||||
}\
|
||||
\
|
||||
DEBUG_INFO( printf( "Reducing Held: %i Pos: %i\n", iRet, iHold ) ); \
|
||||
@@ -535,11 +533,18 @@ int Reduce( int iToken, BOOL bReal );
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
/* No longer a prospect. */\
|
||||
REMOVE_PROSPECT(iScan);\
|
||||
if( bReal )\
|
||||
{\
|
||||
/* No longer a prospect. */\
|
||||
REMOVE_PROSPECT(iScan);\
|
||||
\
|
||||
/* Has to continue without increasing the counter, because of side effect of REMOVE_PROSPECT(). */\
|
||||
continue;\
|
||||
/* Has to continue without increasing the counter, because of side effect of REMOVE_PROSPECT(). */\
|
||||
continue;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
iRemoved++;\
|
||||
}\
|
||||
}\
|
||||
\
|
||||
iScan++;\
|
||||
@@ -927,6 +932,8 @@ YY_DECL
|
||||
goto CheckToken ;
|
||||
}
|
||||
|
||||
bIgnoreWords = FALSE;
|
||||
|
||||
IF_BELONG_LEFT( chr )
|
||||
{
|
||||
DEBUG_INFO( printf( "Reducing Left '%c'\n", chr ) );
|
||||
@@ -1039,12 +1046,12 @@ YY_DECL
|
||||
sToken[ iLen ] = '\0';
|
||||
|
||||
DEBUG_INFO( printf( "Token: \"%s\" at <NewLine> Holding: \'%c\'\n", sToken, chr ) );
|
||||
|
||||
goto CheckToken;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_INFO( printf( "Reducing NewLine '%c'\n", chr ) );
|
||||
bIgnoreWords = FALSE;
|
||||
bNewLine = TRUE;
|
||||
RETURN_TOKEN( REDUCE( (int) chr ), NULL );
|
||||
}
|
||||
@@ -1079,6 +1086,8 @@ YY_DECL
|
||||
{
|
||||
DEBUG_INFO( printf( "Reducing Delimiter: '%c'\n", chr ) );
|
||||
|
||||
bIgnoreWords = FALSE;
|
||||
|
||||
if( bNewLine )
|
||||
{
|
||||
bNewLine = FALSE;
|
||||
@@ -1244,6 +1253,8 @@ YY_DECL
|
||||
|
||||
int Reduce( int iToken, BOOL bReal )
|
||||
{
|
||||
int iRemoved = 0; /* Simulted Removed Prospects if bReal is FALSE. */
|
||||
|
||||
/* The search rutine will "return" the number of Matches in iFound, number of Prospects in iProspects, and the last
|
||||
(and hopefuly only) Matched Rule No in iReduce. */
|
||||
|
||||
@@ -1266,7 +1277,7 @@ int Reduce( int iToken, BOOL bReal )
|
||||
|
||||
if( ! bReal )
|
||||
{
|
||||
return ( iFound || iProspects );
|
||||
return ( iFound || ( iProspects - iRemoved ) );
|
||||
}
|
||||
|
||||
DEBUG_INFO( printf( "Found %i Rules and %i Prospects for Token %i After %i %i %i\n", iFound, iProspects, iToken, aiMatched[0], aiMatched[1], aiMatched[2] ) );
|
||||
|
||||
@@ -222,8 +222,11 @@ LOCAL case
|
||||
case )
|
||||
NEXT case
|
||||
|
||||
case[ case ] :=case //in Clipper: Case is not immediatelly within DO CASE
|
||||
case[ 2 ] :=2 //in Clipper: the same as above - Harbour compiles both
|
||||
do case
|
||||
case[ case ] == "case"
|
||||
case[ 2 ] == "2"
|
||||
endcase
|
||||
|
||||
case :=case[ 2 ]
|
||||
case =case + case - case
|
||||
case :={|case| case( case )}
|
||||
@@ -337,20 +340,26 @@ LOCAL with
|
||||
|
||||
do->do :=while->while
|
||||
|
||||
while[ 1 ] :=while
|
||||
while[ 2 ] +=2
|
||||
while[ 1 ] ==while
|
||||
while[ 2 ] $ "2"
|
||||
while( while )
|
||||
while( while[1] )
|
||||
while[ while ] == while[ 1 ]
|
||||
|
||||
while( while )
|
||||
while( while[1] )
|
||||
while[ while ] :=while[ 1 ] //in Clipper: syntax error ' 1 '
|
||||
while :={|while| while}
|
||||
while :={|while| while}
|
||||
|
||||
while while++ < 10
|
||||
( while )->( while() )
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
while while++ < 10
|
||||
( while )->( while() )
|
||||
enddo
|
||||
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
while while[1] //in Clipper: syntax error ' 1 '
|
||||
enddo
|
||||
|
||||
|
||||
Reference in New Issue
Block a user