trying to implement the exception variable in catch

This commit is contained in:
hyung-hwan 2021-04-22 00:00:12 +00:00
parent 4ff6fff433
commit 030a71c7cd

View File

@ -159,7 +159,7 @@ static int __find_word_in_string (const hcl_oocs_t* haystack, const hcl_oocs_t*
if (found != HCL_TYPE_MAX(hcl_oow_t))
{
if (xindex) *xindex = found;
return 0; /* foudn */
return 0; /* found */
}
return -1; /* not found */
@ -183,6 +183,16 @@ static int add_temporary_variable (hcl_t* hcl, const hcl_oocs_t* name, hcl_oow_t
return x;
}
static int kill_temporary_variable (hcl_t* hcl, hcl_oow_t start_wpos, hcl_oow_t end_wpos)
{
/* this function doesn't remove the added temporary variable nor does it lower the word count.
* it simply changes a word at the given postion to some garbage characters so that
* the variable can't be found in the search */
/* TODO: .... */
return 0;
}
static int find_temporary_variable_backward (hcl_t* hcl, const hcl_oocs_t* name, hcl_oow_t* index)
{
/* find the last element */
@ -1997,7 +2007,16 @@ static HCL_INLINE int compile_catch (hcl_t* hcl)
hcl_setsynerrbfmt (hcl, HCL_SYNERR_VARNAME, HCL_CNODE_GET_LOC(exarg), HCL_CNODE_GET_TOK(exarg), "invalid exception variable name in %.*js", HCL_CNODE_GET_TOKLEN(cmd), HCL_CNODE_GET_TOKPTR(cmd));
return -1;
}
/* TODO: add the exception variable to the local variable list... increase the number of local variables ... etc */
/* -------------------------------------------- */
/*
TODO: do implement this part
/* add the exception variable to the local variable list... increase the number of local variables */
if (add_temporary_variable(hcl, HCL_CNODE_GET_TOK(exarg), hcl->c->tv.s.len) <= -1) return -1;
hcl->c->fnblk.info[hcl->c->fnblk.depth].tmprlen = hcl->c->tv.s.len;
hcl->c->fnblk.info[hcl->c->fnblk.depth].tmprcnt = hcl->c->tv.wcount;
/*
/* -------------------------------------------- */
obj = HCL_CNODE_CONS_CDR(obj);