The parser handles correctly the ERROR keyword again.
[COMPILER] * BUG: The parser handles correctly the ERROR keyword again.
This commit is contained in:
parent
bff79700f3
commit
39bf786af9
3 changed files with 8 additions and 3 deletions
|
@ -84,7 +84,8 @@ enum {
|
||||||
RSJ_READ,
|
RSJ_READ,
|
||||||
RSJ_DATATYPE,
|
RSJ_DATATYPE,
|
||||||
RSJ_OPTIONAL,
|
RSJ_OPTIONAL,
|
||||||
RSJ_BYREF
|
RSJ_BYREF,
|
||||||
|
RSJ_ERROR
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RES_is_operator(value) (COMP_res_info[value].flag & RSF_OP)
|
#define RES_is_operator(value) (COMP_res_info[value].flag & RSF_OP)
|
||||||
|
|
|
@ -105,7 +105,7 @@ COMP_INFO COMP_res_info[] =
|
||||||
{ "Stop" },
|
{ "Stop" },
|
||||||
{ "Quit" },
|
{ "Quit" },
|
||||||
{ "Raise", RSF_IDENT|RSF_EVENT },
|
{ "Raise", RSF_IDENT|RSF_EVENT },
|
||||||
{ "Error" },
|
{ "Error", 0, 0, RSJ_ERROR },
|
||||||
{ "Super", 0, 0, RSJ_ME },
|
{ "Super", 0, 0, RSJ_ME },
|
||||||
{ "Enum", 0, 0, RSJ_CONST },
|
{ "Enum", 0, 0, RSJ_CONST },
|
||||||
{ "Let" },
|
{ "Let" },
|
||||||
|
|
|
@ -318,7 +318,7 @@ static void add_identifier()
|
||||||
{
|
{
|
||||||
static void *jump[] = {
|
static void *jump[] = {
|
||||||
&&__OTHERS, &&__ME_NEW_LAST_SUPER, &&__CLASS, &&__STRUCT, &&__SUB_PROCEDURE_FUNCTION, &&__CONST_EXTERN_ENUM, &&__READ,
|
&&__OTHERS, &&__ME_NEW_LAST_SUPER, &&__CLASS, &&__STRUCT, &&__SUB_PROCEDURE_FUNCTION, &&__CONST_EXTERN_ENUM, &&__READ,
|
||||||
&&__DATATYPE, &&__OPTIONAL, &&__BYREF
|
&&__DATATYPE, &&__OPTIONAL, &&__BYREF, &&__ERROR
|
||||||
};
|
};
|
||||||
|
|
||||||
last_next_ident = (flag & RSF_IDENT) != 0;
|
last_next_ident = (flag & RSF_IDENT) != 0;
|
||||||
|
@ -379,6 +379,10 @@ static void add_identifier()
|
||||||
can_be_reserved = FALSE;
|
can_be_reserved = FALSE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
__ERROR:
|
||||||
|
can_be_reserved = canres_car[car] && !last_next_ident;
|
||||||
|
break;
|
||||||
|
|
||||||
__OTHERS:
|
__OTHERS:
|
||||||
if (!canres_car[car])
|
if (!canres_car[car])
|
||||||
can_be_reserved = FALSE;
|
can_be_reserved = FALSE;
|
||||||
|
|
Loading…
Reference in a new issue