From fac4aa7af5a0ef87560927185cf2330e900a9ced Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Wed, 18 Jun 2025 23:45:34 +0900 Subject: [PATCH] implemented switch ... case .. default .. --- README.md | 22 +- bin/hawk.c | 9 + lib/Hawk.cpp | 12 +- lib/err.c | 3 + lib/fio.c | 6 +- lib/fmt.c | 12 +- lib/fnc.c | 42 +- lib/hawk-cmn.h | 3 + lib/hawk-prv.h | 1 + lib/hawk.c | 62 +-- lib/hawk.h | 14 +- lib/mod-math.c | 4 +- lib/mod-sys.c | 4 +- lib/parse-prv.h | 3 + lib/parse.c | 1328 ++++++++++++++++++++++++++++------------------- lib/run.c | 525 ++++++++++++------- lib/sio.c | 2 +- lib/std.c | 134 ++--- lib/tree-prv.h | 19 + lib/tree.c | 884 ++++++++++++++++--------------- lib/utf8.c | 12 +- lib/utl.c | 4 +- lib/val.c | 2 +- t/h-002.hawk | 108 ++++ 24 files changed, 1909 insertions(+), 1306 deletions(-) diff --git a/README.md b/README.md index e73259d4..e8405fa3 100644 --- a/README.md +++ b/README.md @@ -476,7 +476,9 @@ The following words are reserved and cannot be used as a variable name, a parame - BEGIN - END - break + - case - continue + - default - delete - do - else @@ -494,6 +496,7 @@ The following words are reserved and cannot be used as a variable name, a parame - printf - return - while + - switch However, some of these words not beginning with `@` can be used as normal names in the context of a module call. For example, `mymod::break`. In practice, the predefined names used for built-in commands, functions, and variables are treated as if they are reserved since you can't create another definition with the same name. @@ -633,7 +636,7 @@ BEGIN { Hawk supports various control structures for flow control and iteration, similar to those found in awk. -The `if` statement in Hawk follows the same syntax as in awk and other programming languages. It allows you to execute a block of code conditionally based on a specified condition. +The `if` statement follows the same syntax as in awk and other programming languages. It allows you to execute a block of code conditionally based on a specified condition. ```awk if (condition) { @@ -645,7 +648,18 @@ if (condition) { } ``` -The `while` loop in Hawk is used to repeatedly execute a block of code as long as a specific condition is true. +The `switch` statement allows the result of an expression to be tested against a list of values. +```awk +switch (expression) { +case value: + ## statements +... +default: + ## statements +} +``` + +The `while` loop is used to repeatedly execute a block of code as long as a specific condition is true. ```awk while (condition) { # statements @@ -659,13 +673,13 @@ do { } while (condition) ``` -The `for` loop in Hawk follows the same syntax as in awk and allows you to iterate over a range of values or an array. +The `for` loop follows the same syntax as in awk and allows you to iterate over a range of values or an array. ```awk for (initialization; condition; increment/decrement) { ## statements } ``` -You can also use the for loop to iterate over the elements of an array: +You can also use the `fo`r loop to iterate over the elements of an array: ```awk for (index in array) { ## statements using array[index] diff --git a/bin/hawk.c b/bin/hawk.c index 6621ae7e..72e7d626 100644 --- a/bin/hawk.c +++ b/bin/hawk.c @@ -539,6 +539,15 @@ static void print_usage (FILE* out, const hawk_bch_t* argv0, const hawk_bch_t* r { fprintf (out, " --%-18s on/off %s\n", opttab[j].name, opttab[j].desc); } + + if (!real_argv0) + { + fprintf (out, "\n"); + fprintf (out, "Special mode switching options(must be specified first to take effect):\n"); + fprintf (out, " --hawk/--awk run in the hawk mode\n"); + fprintf (out, " --cut run in the cut mode\n"); + fprintf (out, " --sed run in the sed mode\n"); + } } /* ---------------------------------------------------------------------- */ diff --git a/lib/Hawk.cpp b/lib/Hawk.cpp index f393f7f8..2dc710c3 100644 --- a/lib/Hawk.cpp +++ b/lib/Hawk.cpp @@ -1914,7 +1914,7 @@ int Hawk::setIncludeDirs (const hawk_uch_t* dirs) if (HAWK_UNLIKELY(!tmp)) return -1; int n = hawk_setopt(hawk, HAWK_OPT_INCLUDEDIRS, tmp); - hawk_freemem (hawk, tmp); + hawk_freemem(hawk, tmp); return n; #endif } @@ -1927,7 +1927,7 @@ int Hawk::setIncludeDirs (const hawk_bch_t* dirs) if (HAWK_UNLIKELY(!tmp)) return -1; int n = hawk_setopt(hawk, HAWK_OPT_INCLUDEDIRS, tmp); - hawk_freemem (hawk, tmp); + hawk_freemem(hawk, tmp); return n; #else return hawk_setopt(this->hawk, HAWK_OPT_INCLUDEDIRS, dirs); @@ -2175,9 +2175,9 @@ void Hawk::xstrs_t::clear (hawk_t* hawk) if (this->ptr != HAWK_NULL) { while (this->len > 0) - hawk_freemem (hawk, this->ptr[--this->len].ptr); + hawk_freemem(hawk, this->ptr[--this->len].ptr); - hawk_freemem (hawk, this->ptr); + hawk_freemem(hawk, this->ptr); this->ptr = HAWK_NULL; this->capa = 0; } @@ -2423,7 +2423,7 @@ hawk_ooi_t Hawk::readSource (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* a case HAWK_SIO_CMD_READ: return xtn->hawk->source_reader->read(sdat, data, count); default: - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINTERN); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINTERN); return -1; } } @@ -2442,7 +2442,7 @@ hawk_ooi_t Hawk::writeSource (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* case HAWK_SIO_CMD_WRITE: return xtn->hawk->source_writer->write (sdat, data, count); default: - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINTERN); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINTERN); return -1; } } diff --git a/lib/err.c b/lib/err.c index 56a05f5a..36496e68 100644 --- a/lib/err.c +++ b/lib/err.c @@ -76,6 +76,7 @@ const hawk_ooch_t* hawk_dfl_errstr (hawk_errnum_t errnum) HAWK_T("left brace expected"), HAWK_T("left parenthesis expected"), HAWK_T("right parenthesis expected"), + HAWK_T("right brace expected"), HAWK_T("right bracket expected"), HAWK_T("comma expected"), HAWK_T("semicolon expected"), @@ -88,6 +89,8 @@ const hawk_ooch_t* hawk_dfl_errstr (hawk_errnum_t errnum) HAWK_T("keyword 'function' expected"), HAWK_T("keyword 'while' expected"), + HAWK_T("keyword 'case' expected"), + HAWK_T("multiple 'default' labels"), HAWK_T("invalid assignment statement"), HAWK_T("identifier expected"), HAWK_T("not a valid function name"), diff --git a/lib/fio.c b/lib/fio.c index 5b6c231a..dc90e0fa 100644 --- a/lib/fio.c +++ b/lib/fio.c @@ -284,7 +284,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_gem_t* gem, const hawk_ooch_t* path, in { handle = *(hawk_fio_hnd_t*)path; /* do not specify an invalid handle value */ - /*HAWK_ASSERT (hawk, handle != INVALID_HANDLE_VALUE);*/ + /*HAWK_ASSERT(hawk, handle != INVALID_HANDLE_VALUE);*/ if (handle == GetStdHandle (STD_INPUT_HANDLE)) fio->status |= STATUS_WIN32_STDIN; @@ -573,7 +573,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_gem_t* gem, const hawk_ooch_t* path, in { handle = *(hawk_fio_hnd_t*)path; /* do not specify an invalid handle value */ - /*HAWK_ASSERT (hawk, handle >= 0);*/ + /*HAWK_ASSERT(hawk, handle >= 0);*/ } else { @@ -784,7 +784,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_gem_t* gem, const hawk_ooch_t* path, in { handle = *(hawk_fio_hnd_t*)path; /* do not specify an invalid handle value */ - /*HAWK_ASSERT (hawk, handle >= 0);*/ + /*HAWK_ASSERT(hawk, handle >= 0);*/ } else { diff --git a/lib/fmt.c b/lib/fmt.c index d547b96c..59602a53 100644 --- a/lib/fmt.c +++ b/lib/fmt.c @@ -1218,7 +1218,7 @@ static int fmt_outv (hawk_fmtout_t* fmtout, va_list ap) newcapa = precision + width + 32; if (fltout->capa < newcapa) { - HAWK_ASSERT (hawk, fltout->ptr == fltout->buf); + HAWK_ASSERT(hawk, fltout->ptr == fltout->buf); fltout->ptr = HAWK_MMGR_ALLOC(fmtout->mmgr, HAWK_SIZEOF(char_t) * (newcapa + 1)); if (!fltout->ptr) goto oops; @@ -1583,7 +1583,7 @@ int hawk_ufmt_out (hawk_fmtout_t* fmtout, const hawk_uch_t* fmt, ...) #define log_write(hawk,mask,ptr,len) do { \ int shuterr = (hawk)->shuterr; \ (hawk)->shuterr = 1; \ - (hawk)->prm.logwrite (hawk, mask, ptr, len); \ + (hawk)->prm.logwrite(hawk, mask, ptr, len); \ (hawk)->shuterr = shuterr; \ } while(0) @@ -1604,7 +1604,7 @@ static int log_oocs (hawk_fmtout_t* fmtout, const hawk_ooch_t* ptr, hawk_oow_t l hawk->log.ptr[hawk->log.len++] = '\n'; } - log_write (hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); + log_write(hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); hawk->log.len = 0; } @@ -1648,7 +1648,7 @@ redo: /* no line ending - append a line terminator */ hawk->log.ptr[hawk->log.len++] = '\n'; } - log_write (hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); + log_write(hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); hawk->log.len = 0; } @@ -1761,7 +1761,7 @@ hawk_ooi_t hawk_logbfmtv (hawk_t* hawk, hawk_bitmask_t mask, const hawk_bch_t* f if (hawk->log.len > 0 && hawk->log.ptr[hawk->log.len - 1] == '\n') { - log_write (hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); + log_write(hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); hawk->log.len = 0; } @@ -1814,7 +1814,7 @@ hawk_ooi_t hawk_logufmtv (hawk_t* hawk, hawk_bitmask_t mask, const hawk_uch_t* f if (hawk->log.len > 0 && hawk->log.ptr[hawk->log.len - 1] == '\n') { - log_write (hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); + log_write(hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); hawk->log.len = 0; } return (x <= -1)? -1: fo.count; diff --git a/lib/fnc.c b/lib/fnc.c index 7145a25d..bfca34ca 100644 --- a/lib/fnc.c +++ b/lib/fnc.c @@ -98,7 +98,7 @@ static hawk_fnc_t* add_fnc (hawk_t* hawk, const hawk_ooch_t* name, const hawk_fn ncs.len = hawk_count_oocstr(name); if (ncs.len <= 0) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); return HAWK_NULL; } @@ -108,7 +108,7 @@ static hawk_fnc_t* add_fnc (hawk_t* hawk, const hawk_ooch_t* name, const hawk_fn if (hawk_findfncwithoocs(hawk, &ncs) != HAWK_NULL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EEXIST, HAWK_T("unable to add existing function - %js"), name); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EEXIST, HAWK_T("unable to add existing function - %js"), name); return HAWK_NULL; } @@ -135,8 +135,8 @@ static hawk_fnc_t* add_fnc (hawk_t* hawk, const hawk_ooch_t* name, const hawk_fn if (!hawk_htb_insert(hawk->fnc.user, (hawk_ooch_t*)ncs.ptr, ncs.len, fnc, 0)) { const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); - hawk_seterrfmt (hawk, HAWK_NULL, hawk_geterrnum(hawk), HAWK_T("unable to add function - %js - %js"), name, bem); - hawk_freemem (hawk, fnc); + hawk_seterrfmt(hawk, HAWK_NULL, hawk_geterrnum(hawk), HAWK_T("unable to add function - %js - %js"), name, bem); + hawk_freemem(hawk, fnc); fnc = HAWK_NULL; } } @@ -166,13 +166,13 @@ hawk_fnc_t* hawk_addfncwithbcstr (hawk_t* hawk, const hawk_bch_t* name, const ha wcs.ptr = hawk_dupbtoucstr(hawk, name, &wcs.len, 0); if (HAWK_UNLIKELY(!wcs.ptr)) { - if (wspec.arg.spec) hawk_freemem (hawk, (hawk_uch_t*)wspec.arg.spec); + if (wspec.arg.spec) hawk_freemem(hawk, (hawk_uch_t*)wspec.arg.spec); return HAWK_NULL; } fnc = add_fnc(hawk, wcs.ptr, &wspec); - hawk_freemem (hawk, wcs.ptr); - if (wspec.arg.spec) hawk_freemem (hawk, (hawk_uch_t*)wspec.arg.spec); + hawk_freemem(hawk, wcs.ptr); + if (wspec.arg.spec) hawk_freemem(hawk, (hawk_uch_t*)wspec.arg.spec); return fnc; #endif } @@ -197,13 +197,13 @@ hawk_fnc_t* hawk_addfncwithucstr (hawk_t* hawk, const hawk_uch_t* name, const ha mbs.ptr = hawk_duputobcstr(hawk, name, &mbs.len); if (HAWK_UNLIKELY(!mbs.ptr)) { - if (mspec.arg.spec) hawk_freemem (hawk, (hawk_bch_t*)mspec.arg.spec); + if (mspec.arg.spec) hawk_freemem(hawk, (hawk_bch_t*)mspec.arg.spec); return HAWK_NULL; } fnc = add_fnc(hawk, mbs.ptr, &mspec); - hawk_freemem (hawk, mbs.ptr); - if (mspec.arg.spec) hawk_freemem (hawk, (hawk_bch_t*)mspec.arg.spec); + hawk_freemem(hawk, mbs.ptr); + if (mspec.arg.spec) hawk_freemem(hawk, (hawk_bch_t*)mspec.arg.spec); return fnc; #else return add_fnc(hawk, name, spec); @@ -221,7 +221,7 @@ int hawk_delfncwithbcstr (hawk_t* hawk, const hawk_bch_t* name) #if defined(HAWK_OOCH_IS_BCH) if (hawk_htb_delete(hawk->fnc.user, ncs.ptr, ncs.len) <= -1) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %hs"), name); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %hs"), name); return -1; } #else @@ -229,11 +229,11 @@ int hawk_delfncwithbcstr (hawk_t* hawk, const hawk_bch_t* name) if (!wcs.ptr) return -1; if (hawk_htb_delete(hawk->fnc.user, wcs.ptr, wcs.len) <= -1) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %hs"), name); - hawk_freemem (hawk, wcs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %hs"), name); + hawk_freemem(hawk, wcs.ptr); return -1; } - hawk_freemem (hawk, wcs.ptr); + hawk_freemem(hawk, wcs.ptr); #endif return 0; @@ -252,15 +252,15 @@ int hawk_delfncwithucstr (hawk_t* hawk, const hawk_uch_t* name) if (!mbs.ptr) return -1; if (hawk_htb_delete(hawk->fnc.user, mbs.ptr, mbs.len) <= -1) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %ls"), name); - hawk_freemem (hawk, mbs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %ls"), name); + hawk_freemem(hawk, mbs.ptr); return -1; } - hawk_freemem (hawk, mbs.ptr); + hawk_freemem(hawk, mbs.ptr); #else if (hawk_htb_delete(hawk->fnc.user, ncs.ptr, ncs.len) <= -1) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %ls"), name); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %ls"), name); return -1; } #endif @@ -297,7 +297,7 @@ static hawk_fnc_t* find_fnc (hawk_t* hawk, const hawk_oocs_t* name) if ((hawk->opt.trait & fnc->spec.trait) == fnc->spec.trait) return fnc; } - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %js"), name); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("no such function - %js"), name); return HAWK_NULL; } @@ -312,7 +312,7 @@ hawk_fnc_t* hawk_findfncwithbcs (hawk_t* hawk, const hawk_bcs_t* name) wcs.ptr = hawk_dupbtouchars(hawk, name->ptr, name->len, &wcs.len, 0); if (HAWK_UNLIKELY(!wcs.ptr)) return HAWK_NULL; fnc = find_fnc(hawk, &wcs); - hawk_freemem (hawk, wcs.ptr); + hawk_freemem(hawk, wcs.ptr); return fnc; #endif } @@ -326,7 +326,7 @@ hawk_fnc_t* hawk_findfncwithucs (hawk_t* hawk, const hawk_ucs_t* name) mbs.ptr = hawk_duputobchars(hawk, name->ptr, name->len, &mbs.len); if (HAWK_UNLIKELY(!mbs.ptr)) return HAWK_NULL; fnc = find_fnc(hawk, &mbs); - hawk_freemem (hawk, mbs.ptr); + hawk_freemem(hawk, mbs.ptr); return fnc; #else return find_fnc(hawk, name); diff --git a/lib/hawk-cmn.h b/lib/hawk-cmn.h index 4b3fefce..b9fb2fb5 100644 --- a/lib/hawk-cmn.h +++ b/lib/hawk-cmn.h @@ -940,6 +940,7 @@ enum hawk_errnum_t HAWK_ELBRACE, /**< left brace expected */ HAWK_ELPAREN, /**< left parenthesis expected */ HAWK_ERPAREN, /**< right parenthesis expected */ + HAWK_ERBRACE, /**< right brace expected */ HAWK_ERBRACK, /**< right bracket expected */ HAWK_ECOMMA, /**< comma expected */ HAWK_ESCOLON, /**< semicolon expected */ @@ -952,6 +953,8 @@ enum hawk_errnum_t HAWK_EKWFNC, /**< keyword 'function' expected */ HAWK_EKWWHL, /**< keyword 'while' expected */ + HAWK_EKWCASE, /**< keyword 'case' expected */ + HAWK_EMULDFL, /**< multiple 'default' labels */ HAWK_EASSIGN, /**< assignment statement expected */ HAWK_EIDENT, /**< identifier expected */ HAWK_EFUNNAM, /**< not a valid function name */ diff --git a/lib/hawk-prv.h b/lib/hawk-prv.h index 3ed59f02..db1c5c1a 100644 --- a/lib/hawk-prv.h +++ b/lib/hawk-prv.h @@ -278,6 +278,7 @@ struct hawk_t hawk_oow_t loop; hawk_oow_t expr; /* expression */ hawk_oow_t incl; + hawk_oow_t swtch; /* switch */ } depth; /* current pragma values */ diff --git a/lib/hawk.c b/lib/hawk.c index f91dead0..420b09ed 100644 --- a/lib/hawk.c +++ b/lib/hawk.c @@ -30,18 +30,18 @@ static void free_fun (hawk_htb_t* map, void* vptr, hawk_oow_t vlen) hawk_fun_t* f = (hawk_fun_t*)vptr; /* f->name doesn't have to be freed */ - /*hawk_freemem (hawk, f->name);*/ + /*hawk_freemem(hawk, f->name);*/ - if (f->argspec) hawk_freemem (hawk, f->argspec); - hawk_clrpt (hawk, f->body); - hawk_freemem (hawk, f); + if (f->argspec) hawk_freemem(hawk, f->argspec); + hawk_clrpt(hawk, f->body); + hawk_freemem(hawk, f); } static void free_fnc (hawk_htb_t* map, void* vptr, hawk_oow_t vlen) { hawk_t* hawk = *(hawk_t**)(map + 1); hawk_fnc_t* f = (hawk_fnc_t*)vptr; - hawk_freemem (hawk, f); + hawk_freemem(hawk, f); } static int init_token (hawk_t* hawk, hawk_tok_t* tok) @@ -139,7 +139,7 @@ int hawk_init (hawk_t* hawk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_pr }; /* zero out the object */ - HAWK_MEMSET (hawk, 0, HAWK_SIZEOF(*hawk)); + HAWK_MEMSET(hawk, 0, HAWK_SIZEOF(*hawk)); /* remember the memory manager */ hawk->_instsize = HAWK_SIZEOF(*hawk); @@ -164,7 +164,7 @@ int hawk_init (hawk_t* hawk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_pr prm->math.pow == HAWK_NULL || prm->math.mod == HAWK_NULL) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); goto oops; } hawk->prm = *prm; @@ -217,7 +217,7 @@ int hawk_init (hawk_t* hawk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_pr hawk->fnc.user == HAWK_NULL || hawk->modtab == HAWK_NULL) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_ENOMEM); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_ENOMEM); goto oops; } @@ -262,7 +262,7 @@ oops: fini_token (&hawk->ntok); fini_token (&hawk->tok); fini_token (&hawk->ptok); - if (hawk->log.ptr) hawk_freemem (hawk, hawk->log.ptr); + if (hawk->log.ptr) hawk_freemem(hawk, hawk->log.ptr); hawk->log.capa = 0; return -1; @@ -280,14 +280,14 @@ void hawk_fini (hawk_t* hawk) { int shuterr = hawk->shuterr; hawk->shuterr = 1; - hawk->prm.logwrite (hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); + hawk->prm.logwrite(hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); hawk->shuterr = shuterr; } for (ecb = hawk->ecb; ecb != (hawk_ecb_t*)hawk; ecb = ecb_next) { ecb_next = ecb->next; - if (ecb->close) ecb->close (hawk, ecb->ctx); + if (ecb->close) ecb->close(hawk, ecb->ctx); } do { ecb = hawk_popecb(hawk); } while (ecb); @@ -309,23 +309,23 @@ void hawk_fini (hawk_t* hawk) fini_token (&hawk->tok); fini_token (&hawk->ptok); - if (hawk->parse.incl_hist.ptr) hawk_freemem (hawk, hawk->parse.incl_hist.ptr); + if (hawk->parse.incl_hist.ptr) hawk_freemem(hawk, hawk->parse.incl_hist.ptr); hawk_clearsionames (hawk); /* destroy dynamically allocated options */ for (i = 0; i < HAWK_COUNTOF(hawk->opt.mod); i++) { - if (hawk->opt.mod[i].ptr) hawk_freemem (hawk, hawk->opt.mod[i].ptr); + if (hawk->opt.mod[i].ptr) hawk_freemem(hawk, hawk->opt.mod[i].ptr); } - if (hawk->opt.includedirs.ptr) hawk_freemem (hawk, hawk->opt.includedirs.ptr); + if (hawk->opt.includedirs.ptr) hawk_freemem(hawk, hawk->opt.includedirs.ptr); for (i = 0; i < HAWK_COUNTOF(hawk->sbuf); i++) { if (hawk->sbuf[i].ptr) { - hawk_freemem (hawk, hawk->sbuf[i].ptr); + hawk_freemem(hawk, hawk->sbuf[i].ptr); hawk->sbuf[i].ptr = HAWK_NULL; hawk->sbuf[i].len = 0; hawk->sbuf[i].capa = 0; @@ -340,13 +340,13 @@ void hawk_fini (hawk_t* hawk) * logging */ int shuterr = hawk->shuterr; hawk->shuterr = 1; - hawk->prm.logwrite (hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); + hawk->prm.logwrite(hawk, hawk->log.last_mask, hawk->log.ptr, hawk->log.len); hawk->shuterr = shuterr; } if (hawk->log.ptr) { - hawk_freemem (hawk, hawk->log.ptr); + hawk_freemem(hawk, hawk->log.ptr); hawk->log.capa = 0; hawk->log.len = 0; } @@ -359,7 +359,7 @@ static hawk_rbt_walk_t unload_module (hawk_rbt_t* rbt, hawk_rbt_pair_t* pair, vo md = HAWK_RBT_VPTR(pair); if (md->mod.unload) md->mod.unload (&md->mod, hawk); - if (md->handle) hawk->prm.modclose (hawk, md->handle); + if (md->handle) hawk->prm.modclose(hawk, md->handle); return HAWK_RBT_WALK_FORWARD; } @@ -371,7 +371,7 @@ void hawk_clear (hawk_t* hawk) for (ecb = hawk->ecb; ecb != (hawk_ecb_t*)hawk; ecb = ecb_next) { ecb_next = ecb->next; - if (ecb->clear) ecb->clear (hawk, ecb->ctx); + if (ecb->clear) ecb->clear(hawk, ecb->ctx); } /* hawk_clear() this doesn't pop event callbacks */ @@ -418,14 +418,14 @@ void hawk_clear (hawk_t* hawk) if (hawk->tree.begin) { - hawk_clrpt (hawk, hawk->tree.begin); + hawk_clrpt(hawk, hawk->tree.begin); hawk->tree.begin = HAWK_NULL; hawk->tree.begin_tail = HAWK_NULL; } if (hawk->tree.end) { - hawk_clrpt (hawk, hawk->tree.end); + hawk_clrpt(hawk, hawk->tree.end); hawk->tree.end = HAWK_NULL; hawk->tree.end_tail = HAWK_NULL; } @@ -433,9 +433,9 @@ void hawk_clear (hawk_t* hawk) while (hawk->tree.chain) { hawk_chain_t* next = hawk->tree.chain->next; - if (hawk->tree.chain->pattern) hawk_clrpt (hawk, hawk->tree.chain->pattern); - if (hawk->tree.chain->action) hawk_clrpt (hawk, hawk->tree.chain->action); - hawk_freemem (hawk, hawk->tree.chain); + if (hawk->tree.chain->pattern) hawk_clrpt(hawk, hawk->tree.chain->pattern); + if (hawk->tree.chain->action) hawk_clrpt(hawk, hawk->tree.chain->action); + hawk_freemem(hawk, hawk->tree.chain); hawk->tree.chain = next; } @@ -493,7 +493,7 @@ int hawk_setopt (hawk_t* hawk, hawk_opt_t id, const void* value) if (dup_str_opt(hawk, value, &tmp) <= -1) return -1; idx = id - HAWK_OPT_MODLIBDIRS; - if (hawk->opt.mod[idx].ptr) hawk_freemem (hawk, hawk->opt.mod[idx].ptr); + if (hawk->opt.mod[idx].ptr) hawk_freemem(hawk, hawk->opt.mod[idx].ptr); hawk->opt.mod[idx] = tmp; return 0; @@ -503,7 +503,7 @@ int hawk_setopt (hawk_t* hawk, hawk_opt_t id, const void* value) { hawk_oocs_t tmp; if (dup_str_opt(hawk, value, &tmp) <= -1) return -1; - if (hawk->opt.includedirs.ptr) hawk_freemem (hawk, hawk->opt.includedirs.ptr); + if (hawk->opt.includedirs.ptr) hawk_freemem(hawk, hawk->opt.includedirs.ptr); hawk->opt.includedirs = tmp; return 0; } @@ -535,7 +535,7 @@ int hawk_setopt (hawk_t* hawk, hawk_opt_t id, const void* value) } - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); return -1; } @@ -581,7 +581,7 @@ int hawk_getopt (hawk_t* hawk, hawk_opt_t id, void* value) }; - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); return -1; } @@ -728,21 +728,21 @@ int hawk_findmodsymflt_noseterr (hawk_t* hawk, hawk_mod_flt_tab_t* flttab, hawk_ int hawk_findmodsymfnc (hawk_t* hawk, hawk_mod_fnc_tab_t* fnctab, hawk_oow_t count, const hawk_ooch_t* name, hawk_mod_sym_t* sym) { int n = hawk_findmodsymfnc_noseterr(hawk, fnctab, count, name, sym); - if (n <= -1) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name); + if (n <= -1) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name); return n; } int hawk_findmodsymint (hawk_t* hawk, hawk_mod_int_tab_t* inttab, hawk_oow_t count, const hawk_ooch_t* name, hawk_mod_sym_t* sym) { int n = hawk_findmodsymint_noseterr(hawk, inttab, count, name, sym); - if (n <= -1) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name); + if (n <= -1) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name); return n; } int hawk_findmodsymflt (hawk_t* hawk, hawk_mod_flt_tab_t* flttab, hawk_oow_t count, const hawk_ooch_t* name, hawk_mod_sym_t* sym) { int n = hawk_findmodsymflt_noseterr(hawk, flttab, count, name, sym); - if (n <= -1) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name); + if (n <= -1) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name); return n; } diff --git a/lib/hawk.h b/lib/hawk.h index e99c933a..7d7e447a 100644 --- a/lib/hawk.h +++ b/lib/hawk.h @@ -60,7 +60,7 @@ * hawk_rio_cbs_t rio; // need to initialize it with callback functions * * hawk = hawk_open(mmgr, 0, prm); // create an interpreter - * hawk_parse (hawk, &sio); // parse a script + * hawk_parse(hawk, &sio); // parse a script * rtx = hawk_rtx_open(hawk, 0, &rio); // create a runtime context * retv = hawk_rtx_loop(rtx); // run a standard AWK loop * if (retv) hawk_rtx_refdownval (rtx, retv); // free return value @@ -398,6 +398,8 @@ enum hawk_nde_type_t /* statement */ HAWK_NDE_BLK, HAWK_NDE_IF, + HAWK_NDE_SWITCH, + HAWK_NDE_CASE, HAWK_NDE_WHILE, HAWK_NDE_DOWHILE, HAWK_NDE_FOR, @@ -1903,8 +1905,8 @@ HAWK_EXPORT void hawk_clrfnc ( * if (n >= 0) * { * while (n > 0) - * n = sio->in (hawk, HAWK_SIO_CMD_READ, buf, buf_size); - * sio->in (hawk, HAWK_SIO_CMD_CLOSE); + * n = sio->in(hawk, HAWK_SIO_CMD_READ, buf, buf_size); + * sio->in(hawk, HAWK_SIO_CMD_CLOSE); * } * \endcode * @@ -1917,12 +1919,12 @@ HAWK_EXPORT void hawk_clrfnc ( * calling \a sio->out as shown below: * * \code - * n = sio->out (hawk, HAWK_SIO_CMD_OPEN); + * n = sio->out(hawk, HAWK_SIO_CMD_OPEN); * if (n >= 0) * { * while (n > 0) - * n = sio->out (hawk, HAWK_SIO_CMD_WRITE, text, text_size); - * sio->out (hawk, HAWK_SIO_CMD_CLOSE); + * n = sio->out(hawk, HAWK_SIO_CMD_WRITE, text, text_size); + * sio->out(hawk, HAWK_SIO_CMD_CLOSE); * } * \endcode * diff --git a/lib/mod-math.c b/lib/mod-math.c index 54aee866..ac90807a 100644 --- a/lib/mod-math.c +++ b/lib/mod-math.c @@ -182,7 +182,7 @@ static hawk_flt_t math_round (hawk_t* hawk, hawk_flt_t x) hawk_flt_t f, d; - f = math_floor (hawk, x); + f = math_floor(hawk, x); d = x - f; /* get fraction */ if (d > (hawk_flt_t)0.5) @@ -670,7 +670,7 @@ static void unload (hawk_mod_t* mod, hawk_t* hawk) modctx_t* modctx; modctx = (modctx_t*)mod->ctx; - hawk_freemem (hawk, modctx); + hawk_freemem(hawk, modctx); } int hawk_mod_math (hawk_mod_t* mod, hawk_t* hawk) diff --git a/lib/mod-sys.c b/lib/mod-sys.c index d0401335..7cddd251 100644 --- a/lib/mod-sys.c +++ b/lib/mod-sys.c @@ -6394,7 +6394,7 @@ static void unload (hawk_mod_t* mod, hawk_t* hawk) HAWK_ASSERT (HAWK_RBT_SIZE(mctx->rtxtab) == 0); hawk_rbt_close (mctx->rtxtab); - hawk_freemem (hawk, mctx); + hawk_freemem(hawk, mctx); } int hawk_mod_sys (hawk_mod_t* mod, hawk_t* hawk) @@ -6413,7 +6413,7 @@ int hawk_mod_sys (hawk_mod_t* mod, hawk_t* hawk) rbt = hawk_rbt_open(hawk_getgem(hawk), 0, 1, 1); if (HAWK_UNLIKELY(!rbt)) { - hawk_freemem (hawk, mod->ctx); + hawk_freemem(hawk, mod->ctx); return -1; } hawk_rbt_setstyle (rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); diff --git a/lib/parse-prv.h b/lib/parse-prv.h index 95bedd3a..4bdbaeeb 100644 --- a/lib/parse-prv.h +++ b/lib/parse-prv.h @@ -41,7 +41,9 @@ enum hawk_kwid_t HAWK_KWID_BEGIN, HAWK_KWID_END, HAWK_KWID_BREAK, + HAWK_KWID_CASE, HAWK_KWID_CONTINUE, + HAWK_KWID_DEFAULT, HAWK_KWID_DELETE, HAWK_KWID_DO, HAWK_KWID_ELSE, @@ -58,6 +60,7 @@ enum hawk_kwid_t HAWK_KWID_PRINT, HAWK_KWID_PRINTF, HAWK_KWID_RETURN, + HAWK_KWID_SWITCH, HAWK_KWID_WHILE }; diff --git a/lib/parse.c b/lib/parse.c index 0a5b1c86..613cde38 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -35,10 +35,13 @@ #define FMT_EKWFNC HAWK_T("keyword 'function' expected in place of '%.*js'") #define FMT_EKWIN HAWK_T("keyword 'in' expected in place of '%.*js'") #define FMT_EKWWHL HAWK_T("keyword 'while' expected in place of '%.*js'") +#define FMT_EKWCASE HAWK_T("keyword 'case' expected in place of '%.*js'") +#define FMT_EMULDFL HAWK_T("multiple '%.*js' labels") #define FMT_ELBRACE HAWK_T("left brace expected in place of '%.*js'") #define FMT_ELPAREN HAWK_T("left parenthesis expected in place of '%.*js'") #define FMT_ENOENT_GBL_HS HAWK_T("no such global variable - %.*hs") #define FMT_ENOENT_GBL_LS HAWK_T("no such global variable - %.*ls") +#define FMT_ERBRACE HAWK_T("right brace expected in place of '%.*js'") #define FMT_ERBRACK HAWK_T("right bracket expected in place of '%.*js'") #define FMT_ERPAREN HAWK_T("right parenthesis expected in place of '%.*js'") #define FMT_ESCOLON HAWK_T("semicolon expected in place of '%.*js'") @@ -48,6 +51,8 @@ #define TOK_FLAGS_LPAREN_CLOSER (1 << 0) +#define PARSE_BLOCK_FLAG_IS_TOP (1 << 0) + enum tok_t { TOK_EOF, @@ -140,6 +145,9 @@ enum tok_t TOK_WHILE, TOK_FOR, TOK_DO, + TOK_SWITCH, + TOK_CASE, + TOK_DEFAULT, TOK_BREAK, TOK_CONTINUE, TOK_RETURN, @@ -200,17 +208,15 @@ static int parse_progunit (hawk_t* hawk); static hawk_t* collect_globals (hawk_t* hawk); static void adjust_static_globals (hawk_t* hawk); static hawk_oow_t find_global (hawk_t* hawk, const hawk_oocs_t* name); -static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop); +static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int flags); static hawk_nde_t* parse_function (hawk_t* hawk); static hawk_nde_t* parse_begin (hawk_t* hawk); static hawk_nde_t* parse_end (hawk_t* hawk); static hawk_chain_t* parse_action_block (hawk_t* hawk, hawk_nde_t* ptn, int blockless); -static hawk_nde_t* parse_block_dc (hawk_t* hawk, const hawk_loc_t* xloc, int istop); - +static hawk_nde_t* parse_block_dc (hawk_t* hawk, const hawk_loc_t* xloc, int flags); static hawk_nde_t* parse_statement (hawk_t* hawk, const hawk_loc_t* xloc); - static hawk_nde_t* parse_expr_withdc (hawk_t* hawk, const hawk_loc_t* xloc); static hawk_nde_t* parse_logical_or (hawk_t* hawk, const hawk_loc_t* xloc); @@ -233,6 +239,7 @@ static hawk_nde_t* parse_unary_exp (hawk_t* hawk, const hawk_loc_t* xloc); static hawk_nde_t* parse_increment (hawk_t* hawk, const hawk_loc_t* xloc); static hawk_nde_t* parse_primary (hawk_t* hawk, const hawk_loc_t* xloc); static hawk_nde_t* parse_primary_ident (hawk_t* hawk, const hawk_loc_t* xloc); +static hawk_nde_t* parse_primary_literal (hawk_t* hawk, const hawk_loc_t* xloc); static hawk_nde_t* parse_hashidx (hawk_t* hawk, const hawk_oocs_t* name, const hawk_loc_t* xloc); #define FNCALL_FLAG_NOARG (1 << 0) /* no argument */ @@ -281,7 +288,9 @@ static kwent_t kwtab[] = { { HAWK_T("BEGIN"), 5 }, TOK_BEGIN, HAWK_PABLOCK }, { { HAWK_T("END"), 3 }, TOK_END, HAWK_PABLOCK }, { { HAWK_T("break"), 5 }, TOK_BREAK, 0 }, + { { HAWK_T("case"), 4 }, TOK_CASE, 0 }, { { HAWK_T("continue"), 8 }, TOK_CONTINUE, 0 }, + { { HAWK_T("default"), 7 }, TOK_DEFAULT, 0 }, { { HAWK_T("delete"), 6 }, TOK_DELETE, 0 }, { { HAWK_T("do"), 2 }, TOK_DO, 0 }, { { HAWK_T("else"), 4 }, TOK_ELSE, 0 }, @@ -298,6 +307,7 @@ static kwent_t kwtab[] = { { HAWK_T("print"), 5 }, TOK_PRINT, HAWK_RIO }, { { HAWK_T("printf"), 6 }, TOK_PRINTF, HAWK_RIO }, { { HAWK_T("return"), 6 }, TOK_RETURN, 0 }, + { { HAWK_T("switch"), 6 }, TOK_SWITCH, 0 }, { { HAWK_T("while"), 5 }, TOK_WHILE, 0 } }; @@ -390,7 +400,7 @@ static global_t gtab[] = do { \ if (HAWK_UNLIKELY(hawk_ooecs_ccat((tok)->name,(c)) == (hawk_oow_t)-1)) \ { \ - ADJERR_LOC (hawk, &(tok)->loc); \ + ADJERR_LOC(hawk, &(tok)->loc); \ return -1; \ } \ } while (0) @@ -399,7 +409,7 @@ static global_t gtab[] = do { \ if (HAWK_UNLIKELY(hawk_ooecs_ncat((tok)->name,(s),(l)) == (hawk_oow_t)-1)) \ { \ - ADJERR_LOC (hawk, &(tok)->loc); \ + ADJERR_LOC(hawk, &(tok)->loc); \ return -1; \ } \ } while (0) @@ -585,7 +595,7 @@ static int parse (hawk_t* hawk) /* see parse_fncall() for what is * stored into hawk->tree.funs */ nde = (hawk_nde_t*)HAWK_HTB_VPTR(p); - hawk_seterrfmt (hawk, &nde->loc, HAWK_EFUNNF, FMT_EFUNNF, HAWK_HTB_KLEN(p), HAWK_HTB_KPTR(p)); + hawk_seterrfmt(hawk, &nde->loc, HAWK_EFUNNF, FMT_EFUNNF, HAWK_HTB_KLEN(p), HAWK_HTB_KPTR(p)); goto oops; } @@ -608,12 +618,12 @@ oops: hawk_sio_arg_t* prev; /* nothing much to do about a close error */ - hawk->sio.inf (hawk, HAWK_SIO_CMD_CLOSE, hawk->sio.inp, HAWK_NULL, 0); + hawk->sio.inf(hawk, HAWK_SIO_CMD_CLOSE, hawk->sio.inp, HAWK_NULL, 0); prev = hawk->sio.inp->prev; HAWK_ASSERT (hawk->sio.inp->name != HAWK_NULL); - hawk_freemem (hawk, hawk->sio.inp); + hawk_freemem(hawk, hawk->sio.inp); hawk->sio.inp = prev; } @@ -649,7 +659,7 @@ hawk_ooch_t* hawk_addsionamewithuchars (hawk_t* hawk, const hawk_uch_t* ptr, haw ucslen = len; bcslen = bcslen + 1; - hawk_convutobchars (hawk, ptr, &ucslen, (hawk_bch_t*)(link + 1), &bcslen); + hawk_convutobchars(hawk, ptr, &ucslen, (hawk_bch_t*)(link + 1), &bcslen); ((hawk_bch_t*)(link + 1))[bcslen] = '\0'; #endif @@ -669,14 +679,14 @@ hawk_ooch_t* hawk_addsionamewithbchars (hawk_t* hawk, const hawk_bch_t* ptr, haw hawk_oow_t bcslen, ucslen; bcslen = len; - if (hawk_convbtouchars (hawk, ptr, &bcslen, HAWK_NULL, &ucslen, 0) <= -1) return HAWK_NULL; + if (hawk_convbtouchars(hawk, ptr, &bcslen, HAWK_NULL, &ucslen, 0) <= -1) return HAWK_NULL; link = (hawk_link_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*link) + HAWK_SIZEOF(hawk_uch_t) * (ucslen + 1)); if (HAWK_UNLIKELY(!link)) return HAWK_NULL; bcslen = len; ucslen = ucslen + 1; - hawk_convbtouchars (hawk, ptr, &bcslen, (hawk_uch_t*)(link + 1), &ucslen, 0); + hawk_convbtouchars(hawk, ptr, &bcslen, (hawk_uch_t*)(link + 1), &ucslen, 0); ((hawk_uch_t*)(link + 1))[ucslen] = '\0'; #else @@ -699,7 +709,7 @@ void hawk_clearsionames (hawk_t* hawk) { cur = hawk->sio_names; hawk->sio_names = cur->link; - hawk_freemem (hawk, cur); + hawk_freemem(hawk, cur); } } @@ -715,7 +725,7 @@ int hawk_parse (hawk_t* hawk, hawk_sio_cbs_t* sio) if (!sio || !sio->in) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); return -1; } @@ -770,7 +780,7 @@ static int end_include (hawk_t* hawk) HAWK_ASSERT (cur->name != HAWK_NULL); /* restore the pragma values */ hawk->parse.pragma.trait = cur->pragma_trait; - hawk_freemem (hawk, cur); + hawk_freemem(hawk, cur); hawk->parse.depth.incl--; if (x != 0) @@ -822,7 +832,7 @@ static int begin_include (hawk_t* hawk, int once) { /* a '\0' character included in the include file name. * we don't support such a file name */ - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EIONMNL, FMT_EIONMNL, HAWK_OOECS_LEN(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EIONMNL, FMT_EIONMNL, HAWK_OOECS_LEN(hawk->tok.name)); return -1; } @@ -838,14 +848,14 @@ static int begin_include (hawk_t* hawk, int once) sio_name = hawk_addsionamewithoochars(hawk, HAWK_OOECS_PTR(hawk->tok.name), HAWK_OOECS_LEN(hawk->tok.name)); if (HAWK_UNLIKELY(!sio_name)) { - ADJERR_LOC (hawk, &hawk->ptok.loc); + ADJERR_LOC(hawk, &hawk->ptok.loc); goto oops; } arg = (hawk_sio_arg_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*arg)); if (HAWK_UNLIKELY(!arg)) { - ADJERR_LOC (hawk, &hawk->ptok.loc); + ADJERR_LOC(hawk, &hawk->ptok.loc); goto oops; } @@ -858,7 +868,7 @@ static int begin_include (hawk_t* hawk, int once) if (hawk->sio.inf(hawk, HAWK_SIO_CMD_OPEN, arg, HAWK_NULL, 0) <= -1) { - ADJERR_LOC (hawk, &hawk->tok.loc); + ADJERR_LOC(hawk, &hawk->tok.loc); goto oops; } @@ -902,7 +912,7 @@ static int begin_include (hawk_t* hawk, int once) oops: /* i don't need to free 'link' here since it's linked to hawk->sio_names * that's freed at the beginning of hawk_parse() or by hawk_close(). */ - if (arg) hawk_freemem (hawk, arg); + if (arg) hawk_freemem(hawk, arg); return -1; } @@ -944,7 +954,7 @@ static int parse_progunit (hawk_t* hawk) if (hawk->opt.depth.s.incl > 0 && hawk->parse.depth.incl >= hawk->opt.depth.s.incl) { - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_EINCLTD); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_EINCLTD); return -1; } @@ -953,7 +963,7 @@ static int parse_progunit (hawk_t* hawk) if (!MATCH(hawk, TOK_STR)) { - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_EINCLSTR); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_EINCLSTR); return -1; } @@ -972,7 +982,7 @@ static int parse_progunit (hawk_t* hawk) if (get_token(hawk) <= -1) return -1; if (!MATCH(hawk, TOK_IDENT)) { - hawk_seterrfmt (hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("identifier expected for '@pragma'")); + hawk_seterrfmt(hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("identifier expected for '@pragma'")); return -1; } @@ -984,13 +994,13 @@ static int parse_progunit (hawk_t* hawk) if (get_token(hawk) <= -1) return -1; if (!MATCH(hawk, TOK_IDENT)) { - hawk_seterrfmt (hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("function name expected for 'entry'")); + hawk_seterrfmt(hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("function name expected for 'entry'")); return -1; } if (HAWK_OOECS_LEN(hawk->tok.name) >= HAWK_COUNTOF(hawk->parse.pragma.entry)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EFUNNAM, HAWK_T("entry function name too long")); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EFUNNAM, HAWK_T("entry function name too long")); return -1; } @@ -999,11 +1009,11 @@ static int parse_progunit (hawk_t* hawk) /* only the top level source */ if (hawk->parse.pragma.entry[0] != '\0') { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EEXIST, HAWK_T("@pragma entry already set")); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EEXIST, HAWK_T("@pragma entry already set")); return -1; } - hawk_copy_oochars_to_oocstr (hawk->parse.pragma.entry, HAWK_COUNTOF(hawk->parse.pragma.entry), HAWK_OOECS_PTR(hawk->tok.name), HAWK_OOECS_LEN(hawk->tok.name)); + hawk_copy_oochars_to_oocstr(hawk->parse.pragma.entry, HAWK_COUNTOF(hawk->parse.pragma.entry), HAWK_OOECS_PTR(hawk->tok.name), HAWK_OOECS_LEN(hawk->tok.name)); } } /* NOTE: trait = is an intended assignment */ @@ -1020,7 +1030,7 @@ static int parse_progunit (hawk_t* hawk) if (!MATCH(hawk, TOK_IDENT)) { error_ident_on_off_expected_for_implicit: - hawk_seterrfmt (hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("identifier 'on' or 'off' expected for '%.*js'"), name.len, name.ptr); + hawk_seterrfmt(hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("identifier 'on' or 'off' expected for '%.*js'"), name.len, name.ptr); return -1; } @@ -1061,7 +1071,7 @@ static int parse_progunit (hawk_t* hawk) if (!MATCH(hawk, TOK_IDENT)) { error_ident_on_off_expected_for_striprecspc: - hawk_seterrfmt (hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("identifier 'on' or 'off' expected for '%.*js'"), name.len, name.ptr); + hawk_seterrfmt(hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("identifier 'on' or 'off' expected for '%.*js'"), name.len, name.ptr); return -1; } @@ -1092,7 +1102,7 @@ static int parse_progunit (hawk_t* hawk) if (get_token(hawk) <= -1) return -1; if (!MATCH(hawk, TOK_INT)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EINTLIT, FMT_EINTLIT, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EINTLIT, FMT_EINTLIT, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } @@ -1104,7 +1114,7 @@ static int parse_progunit (hawk_t* hawk) } else { - hawk_seterrfmt (hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("unknown @pragma identifier - %.*js"), name.len, name.ptr); + hawk_seterrfmt(hawk, &hawk->ptok.loc, HAWK_EIDENT, HAWK_T("unknown @pragma identifier - %.*js"), name.len, name.ptr); return -1; } @@ -1120,7 +1130,7 @@ static int parse_progunit (hawk_t* hawk) { if (!(hawk->opt.trait & HAWK_PABLOCK)) /* pattern action block not allowed */ { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EKWFNC, FMT_EKWFNC, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EKWFNC, FMT_EKWFNC, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } @@ -1131,13 +1141,13 @@ static int parse_progunit (hawk_t* hawk) { /* when HAWK_NEWLINE is set, * BEGIN and { should be located on the same line */ - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_EBLKBEG); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_EBLKBEG); return -1; } if (!MATCH(hawk, TOK_LBRACE)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } @@ -1151,7 +1161,7 @@ static int parse_progunit (hawk_t* hawk) { if (!(hawk->opt.trait & HAWK_PABLOCK)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EKWFNC, FMT_EKWFNC, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EKWFNC, FMT_EKWFNC, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } @@ -1162,13 +1172,13 @@ static int parse_progunit (hawk_t* hawk) { /* when HAWK_NEWLINE is set, * END and { should be located on the same line */ - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_EBLKEND); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_EBLKEND); return -1; } if (!MATCH(hawk, TOK_LBRACE)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } @@ -1183,7 +1193,7 @@ static int parse_progunit (hawk_t* hawk) /* patternless block */ if (!(hawk->opt.trait & HAWK_PABLOCK)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EKWFNC, FMT_EKWFNC, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EKWFNC, FMT_EKWFNC, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } @@ -1209,7 +1219,7 @@ static int parse_progunit (hawk_t* hawk) if (!(hawk->opt.trait & HAWK_PABLOCK)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EKWFNC, FMT_EKWFNC, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EKWFNC, FMT_EKWFNC, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } @@ -1225,16 +1235,16 @@ static int parse_progunit (hawk_t* hawk) { if (get_token(hawk) <= -1) { - hawk_clrpt (hawk, ptn); + hawk_clrpt(hawk, ptn); return -1; } eloc = hawk->tok.loc; - ptn->next = parse_expr_withdc (hawk, &eloc); + ptn->next = parse_expr_withdc(hawk, &eloc); if (ptn->next == HAWK_NULL) { - hawk_clrpt (hawk, ptn); + hawk_clrpt(hawk, ptn); return -1; } } @@ -1252,7 +1262,7 @@ static int parse_progunit (hawk_t* hawk) hawk->parse.id.block = PARSE_ACTION_BLOCK; if (parse_action_block(hawk, ptn, 1) == HAWK_NULL) { - hawk_clrpt (hawk, ptn); + hawk_clrpt(hawk, ptn); return -1; } @@ -1263,7 +1273,7 @@ static int parse_progunit (hawk_t* hawk) /* 'ptn' has been added to the chain. * it doesn't have to be cleared here * as hawk_clear does it */ - /*hawk_clrpt (hawk, ptn);*/ + /*hawk_clrpt(hawk, ptn);*/ return -1; } } @@ -1273,7 +1283,7 @@ static int parse_progunit (hawk_t* hawk) /* blockless pattern requires HAWK_RIO * to be ON because the implicit block is * "print $0" */ - hawk_seterrnum (hawk, &ploc, HAWK_ENOSUP); + hawk_seterrnum(hawk, &ploc, HAWK_ENOSUP); return -1; } } @@ -1282,15 +1292,15 @@ static int parse_progunit (hawk_t* hawk) /* parse the action block */ if (!MATCH(hawk,TOK_LBRACE)) { - hawk_clrpt (hawk, ptn); - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_clrpt(hawk, ptn); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } hawk->parse.id.block = PARSE_ACTION_BLOCK; if (parse_action_block(hawk, ptn, 0) == HAWK_NULL) { - hawk_clrpt (hawk, ptn); + hawk_clrpt(hawk, ptn); return -1; } @@ -1325,7 +1335,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) if (!MATCH(hawk,TOK_IDENT)) { /* cannot find a valid identifier for a function name */ - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EFUNNAM, HAWK_T("'%.*js' not a valid function name"), HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EFUNNAM, HAWK_T("'%.*js' not a valid function name"), HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } @@ -1343,7 +1353,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) /* check if it coincides to be a global variable name */ (((g = find_global(hawk, &name)) != HAWK_ARR_NIL) && (rederr = HAWK_EGBLRED, redobj = HAWK_T("global variable")))) { - hawk_seterrfmt (hawk, &hawk->tok.loc, rederr, HAWK_T("%js '%.*js' redefined"), redobj, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, rederr, HAWK_T("%js '%.*js' redefined"), redobj, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } @@ -1351,7 +1361,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) name.ptr = hawk_dupoochars(hawk, name.ptr, name.len); if (!name.ptr) { - ADJERR_LOC (hawk, &hawk->tok.loc); + ADJERR_LOC(hawk, &hawk->tok.loc); return HAWK_NULL; } @@ -1362,7 +1372,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) if (!MATCH(hawk,TOK_LPAREN)) { /* a function name is not followed by a left parenthesis */ - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -1396,7 +1406,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) if (!MATCH(hawk,TOK_RPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -1422,7 +1432,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) if (!MATCH(hawk,TOK_IDENT)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EBADPAR, HAWK_T("'%.*js' not a valid parameter name"), HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EBADPAR, HAWK_T("'%.*js' not a valid parameter name"), HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -1443,20 +1453,20 @@ static hawk_nde_t* parse_function (hawk_t* hawk) hawk_comp_oochars(pa, pal, name.ptr, name.len, 0) == 0) || hawk_arr_search(hawk->parse.params, 0, pa, pal) != HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EDUPPAR, HAWK_T("duplicate parameter name '%.*js'"), pal, pa); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EDUPPAR, HAWK_T("duplicate parameter name '%.*js'"), pal, pa); goto oops; } /* push the parameter to the parameter list */ if (HAWK_ARR_SIZE(hawk->parse.params) >= HAWK_MAX_PARAMS) { - hawk_seterrnum (hawk, &hawk->tok.loc, HAWK_EPARTM); + hawk_seterrnum(hawk, &hawk->tok.loc, HAWK_EPARTM); goto oops; } if (hawk_arr_insert(hawk->parse.params, HAWK_ARR_SIZE(hawk->parse.params), pa, pal) == HAWK_ARR_NIL) { - ADJERR_LOC (hawk, &hawk->tok.loc); + ADJERR_LOC(hawk, &hawk->tok.loc); goto oops; } @@ -1467,7 +1477,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) if (!MATCH(hawk,TOK_COMMA)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ECOMMA, FMT_ECOMMA, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ECOMMA, FMT_ECOMMA, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -1500,7 +1510,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) /* check if the function body starts with a left brace */ if (!MATCH(hawk,TOK_LBRACE)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } if (get_token(hawk) <= -1) goto oops; @@ -1529,7 +1539,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) fun = (hawk_fun_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*fun)); if (HAWK_UNLIKELY(!fun)) { - ADJERR_LOC (hawk, &hawk->tok.loc); + ADJERR_LOC(hawk, &hawk->tok.loc); goto oops; } @@ -1547,7 +1557,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk) /* if hawk_htb_insert() fails for other reasons than memory * shortage, there should be implementaion errors as duplicate * functions are detected earlier in this function */ - ADJERR_LOC (hawk, &hawk->tok.loc); + ADJERR_LOC(hawk, &hawk->tok.loc); goto oops; } @@ -1555,17 +1565,17 @@ static hawk_nde_t* parse_function (hawk_t* hawk) * of the pair */ fun->name.ptr = HAWK_HTB_KPTR(pair); fun->name.len = HAWK_HTB_KLEN(pair); - hawk_freemem (hawk, name.ptr); + hawk_freemem(hawk, name.ptr); /* remove an undefined function call entry from the parse.fun table */ hawk_htb_delete (hawk->parse.funs, fun->name.ptr, name.len); return body; oops: - if (body) hawk_clrpt (hawk, body); - if (argspec) hawk_freemem (hawk, argspec); - if (fun) hawk_freemem (hawk, fun); - hawk_freemem (hawk, name.ptr); + if (body) hawk_clrpt(hawk, body); + if (argspec) hawk_freemem(hawk, argspec); + if (fun) hawk_freemem(hawk, fun); + hawk_freemem(hawk, name.ptr); hawk_arr_clear (hawk->parse.params); return HAWK_NULL; } @@ -1640,8 +1650,8 @@ static hawk_chain_t* parse_action_block (hawk_t* hawk, hawk_nde_t* ptn, int bloc chain = (hawk_chain_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*chain)); if (HAWK_UNLIKELY(!chain)) { - hawk_clrpt (hawk, nde); - ADJERR_LOC (hawk, &xloc); + hawk_clrpt(hawk, nde); + ADJERR_LOC(hawk, &xloc); return HAWK_NULL; } @@ -1665,7 +1675,7 @@ static hawk_chain_t* parse_action_block (hawk_t* hawk, hawk_nde_t* ptn, int bloc return chain; } -static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) +static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int flags) { hawk_nde_t* head, * curr, * nde; hawk_nde_blk_t* block; @@ -1691,7 +1701,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) if (hawk->opt.depth.s.incl > 0 && hawk->parse.depth.incl >= hawk->opt.depth.s.incl) { - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_EINCLTD); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_EINCLTD); return HAWK_NULL; } @@ -1700,7 +1710,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) if (!MATCH(hawk,TOK_STR)) { - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_EINCLSTR); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_EINCLSTR); return HAWK_NULL; } @@ -1715,7 +1725,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) return HAWK_NULL; } - if (collect_locals(hawk, nlcls_outer, istop) == HAWK_NULL) + if (collect_locals(hawk, nlcls_outer, flags) == HAWK_NULL) { hawk_arr_delete (hawk->parse.lcls, nlcls_outer, HAWK_ARR_SIZE(hawk->parse.lcls) - nlcls_outer); return HAWK_NULL; @@ -1739,8 +1749,8 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) if (MATCH(hawk,TOK_EOF)) { hawk_arr_delete (hawk->parse.lcls, nlcls_outer, HAWK_ARR_SIZE(hawk->parse.lcls) - nlcls_outer); - if (head) hawk_clrpt (hawk, head); - hawk_seterrnum (hawk, &hawk->tok.loc, HAWK_EEOF); + if (head) hawk_clrpt(hawk, head); + hawk_seterrnum(hawk, &hawk->tok.loc, HAWK_EEOF); return HAWK_NULL; } @@ -1750,7 +1760,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) if (get_token(hawk) <= -1) { hawk_arr_delete (hawk->parse.lcls, nlcls_outer, HAWK_ARR_SIZE(hawk->parse.lcls) - nlcls_outer); - if (head) hawk_clrpt (hawk, head); + if (head) hawk_clrpt(hawk, head); return HAWK_NULL; } @@ -1761,10 +1771,9 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) { int once; - if (hawk->opt.depth.s.incl > 0 && - hawk->parse.depth.incl >= hawk->opt.depth.s.incl) + if (hawk->opt.depth.s.incl > 0 && hawk->parse.depth.incl >= hawk->opt.depth.s.incl) { - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_EINCLTD); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_EINCLTD); return HAWK_NULL; } @@ -1773,7 +1782,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) if (!MATCH(hawk,TOK_STR)) { - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_EINCLSTR); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_EINCLSTR); return HAWK_NULL; } @@ -1791,7 +1800,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) if (HAWK_UNLIKELY(!nde)) { hawk_arr_delete (hawk->parse.lcls, nlcls_outer, HAWK_ARR_SIZE(hawk->parse.lcls) - nlcls_outer); - if (head) hawk_clrpt (hawk, head); + if (head) hawk_clrpt(hawk, head); return HAWK_NULL; } @@ -1799,12 +1808,12 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) * null statements */ if (nde->type == HAWK_NDE_NULL) { - hawk_clrpt (hawk, nde); + hawk_clrpt(hawk, nde); continue; } if (nde->type == HAWK_NDE_BLK && ((hawk_nde_blk_t*)nde)->body == HAWK_NULL) { - hawk_clrpt (hawk, nde); + hawk_clrpt(hawk, nde); continue; } @@ -1818,8 +1827,8 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) if (HAWK_UNLIKELY(!block)) { hawk_arr_delete (hawk->parse.lcls, nlcls_outer, HAWK_ARR_SIZE(hawk->parse.lcls) - nlcls_outer); - hawk_clrpt (hawk, head); - ADJERR_LOC (hawk, xloc); + hawk_clrpt(hawk, head); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -1845,7 +1854,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) and merged to top-level block */ /* migrate all block-local variables to the outermost block */ - if (istop) + if (flags & PARSE_BLOCK_FLAG_IS_TOP) { HAWK_ASSERT (nlcls_outer == 0 && nlcls_max == 0); block->nlcls = hawk->parse.nlcls_max - nlcls_outer; @@ -1863,7 +1872,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int istop) return (hawk_nde_t*)block; } -static hawk_nde_t* parse_block_dc (hawk_t* hawk, const hawk_loc_t* xloc, int istop) +static hawk_nde_t* parse_block_dc (hawk_t* hawk, const hawk_loc_t* xloc, int flags) { hawk_nde_t* nde; @@ -1871,12 +1880,12 @@ static hawk_nde_t* parse_block_dc (hawk_t* hawk, const hawk_loc_t* xloc, int ist if (hawk->opt.depth.s.block_parse > 0 && hawk->parse.depth.block >= hawk->opt.depth.s.block_parse) { - hawk_seterrnum (hawk, xloc, HAWK_EBLKNST); + hawk_seterrnum(hawk, xloc, HAWK_EBLKNST); return HAWK_NULL; } hawk->parse.depth.block++; - nde = parse_block(hawk, xloc, istop); + nde = parse_block(hawk, xloc, flags); hawk->parse.depth.block--; return nde; @@ -1963,14 +1972,14 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc, /* check if it is a keyword */ if (classify_ident(hawk, name) != TOK_IDENT) { - hawk_seterrfmt (hawk, xloc, HAWK_EKWRED, HAWK_T("keyword '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EKWRED, HAWK_T("keyword '%.*js' redefined"), name->len, name->ptr); return -1; } /* check if it conflicts with a builtin function name */ if (hawk_findfncwithoocs(hawk, name) != HAWK_NULL) { - hawk_seterrfmt (hawk, xloc, HAWK_EFNCRED, HAWK_T("intrinsic function '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EFNCRED, HAWK_T("intrinsic function '%.*js' redefined"), name->len, name->ptr); return -1; } @@ -1979,14 +1988,14 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc, /* check if it conflicts with a function name caught in the function call table */ hawk_htb_search(hawk->parse.funs, name->ptr, name->len) != HAWK_NULL) { - hawk_seterrfmt (hawk, xloc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), name->len, name->ptr); return -1; } /* check if it conflicts with other global variable names */ if (find_global(hawk, name) != HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, xloc, HAWK_EDUPGBL, HAWK_T("duplicate global variable name '%.*js'"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EDUPGBL, HAWK_T("duplicate global variable name '%.*js'"), name->len, name->ptr); return -1; } @@ -1999,7 +2008,7 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc, */ if (hawk_htb_search(hawk->parse.named, name, len) != HAWK_NULL) { - hawk_seterrfmt (hawk, xloc, HAWK_EVARRED, HAWK_T("variable '%.*js' redefined"), len, name); + hawk_seterrfmt(hawk, xloc, HAWK_EVARRED, HAWK_T("variable '%.*js' redefined"), len, name); return -1; } #endif @@ -2007,13 +2016,13 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc, ngbls = HAWK_ARR_SIZE(hawk->parse.gbls); if (ngbls >= HAWK_MAX_GBLS) { - hawk_seterrnum (hawk, xloc, HAWK_EGBLTM); + hawk_seterrnum(hawk, xloc, HAWK_EGBLTM); return -1; } if (hawk_arr_insert(hawk->parse.gbls, HAWK_ARR_SIZE(hawk->parse.gbls), (hawk_ooch_t*)name->ptr, name->len) == HAWK_ARR_NIL) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return -1; } @@ -2038,7 +2047,7 @@ int hawk_addgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) if (hawk->tree.ngbls > hawk->tree.ngbls_base) { /* this function is not allowed after hawk_parse is called */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EPERM); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EPERM); return -1; } @@ -2046,7 +2055,7 @@ int hawk_addgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) ncs.len = hawk_count_bcstr(name);; if (ncs.len <= 0) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); return -1; } @@ -2058,7 +2067,7 @@ int hawk_addgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) wcs.ptr = hawk_dupbtoucstr(hawk, ncs.ptr, &wcs.len, 0); if (!wcs.ptr) return -1; n = add_global(hawk, &wcs, HAWK_NULL, 0); - hawk_freemem (hawk, wcs.ptr); + hawk_freemem(hawk, wcs.ptr); } #endif @@ -2077,7 +2086,7 @@ int hawk_addgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) if (hawk->tree.ngbls > hawk->tree.ngbls_base) { /* this function is not allowed after hawk_parse is called */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EPERM); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EPERM); return -1; } @@ -2085,7 +2094,7 @@ int hawk_addgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) ncs.len = hawk_count_ucstr(name);; if (ncs.len <= 0) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); return -1; } @@ -2095,7 +2104,7 @@ int hawk_addgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) mbs.ptr = hawk_duputobcstr(hawk, ncs.ptr, &mbs.len); if (!mbs.ptr) return -1; n = add_global(hawk, &mbs, HAWK_NULL, 0); - hawk_freemem (hawk, mbs.ptr); + hawk_freemem(hawk, mbs.ptr); } #else n = add_global(hawk, &ncs, HAWK_NULL, 0); @@ -2123,7 +2132,7 @@ int hawk_delgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) if (hawk->tree.ngbls > hawk->tree.ngbls_base) { /* this function is not allow after hawk_parse is called */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EPERM); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EPERM); return -1; } @@ -2131,7 +2140,7 @@ int hawk_delgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_HS, ncs.len, ncs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_HS, ncs.len, ncs.ptr); return -1; } #else @@ -2140,11 +2149,11 @@ int hawk_delgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, wcs.ptr, wcs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_LS, wcs.len, wcs.ptr); - hawk_freemem (hawk, wcs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_LS, wcs.len, wcs.ptr); + hawk_freemem(hawk, wcs.ptr); return -1; } - hawk_freemem (hawk, wcs.ptr); + hawk_freemem(hawk, wcs.ptr); #endif /* invalidate the name if deletion is requested. @@ -2174,7 +2183,7 @@ int hawk_delgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) if (hawk->tree.ngbls > hawk->tree.ngbls_base) { /* this function is not allow after hawk_parse is called */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EPERM); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EPERM); return -1; } @@ -2184,16 +2193,16 @@ int hawk_delgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, mbs.ptr, mbs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_HS, mbs.len, mbs.ptr); - hawk_freemem (hawk, mbs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_HS, mbs.len, mbs.ptr); + hawk_freemem(hawk, mbs.ptr); return -1; } - hawk_freemem (hawk, mbs.ptr); + hawk_freemem(hawk, mbs.ptr); #else n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_LS, ncs.len, ncs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_LS, ncs.len, ncs.ptr); return -1; } #endif @@ -2226,7 +2235,7 @@ int hawk_findgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name, int inc_builtin n = hawk_arr_search(hawk->parse.gbls, (inc_builtins? 0: HAWK_NUM_STATIC_GBLS), ncs.ptr, ncs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_HS, ncs.len, ncs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_HS, ncs.len, ncs.ptr); return -1; } #else @@ -2235,11 +2244,11 @@ int hawk_findgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name, int inc_builtin n = hawk_arr_search(hawk->parse.gbls, (inc_builtins? 0: HAWK_NUM_STATIC_GBLS), wcs.ptr, wcs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_LS, wcs.len, wcs.ptr); - hawk_freemem (hawk, wcs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_LS, wcs.len, wcs.ptr); + hawk_freemem(hawk, wcs.ptr); return -1; } - hawk_freemem (hawk, wcs.ptr); + hawk_freemem(hawk, wcs.ptr); #endif return (int)n; @@ -2260,16 +2269,16 @@ int hawk_findgblwithucstr (hawk_t* hawk, const hawk_uch_t* name, int inc_builtin n = hawk_arr_search(hawk->parse.gbls, (inc_builtins? 0: HAWK_NUM_STATIC_GBLS), mbs.ptr, mbs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_HS, mbs.len, mbs.ptr); - hawk_freemem (hawk, mbs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_HS, mbs.len, mbs.ptr); + hawk_freemem(hawk, mbs.ptr); return -1; } - hawk_freemem (hawk, mbs.ptr); + hawk_freemem(hawk, mbs.ptr); #else n = hawk_arr_search(hawk->parse.gbls, (inc_builtins? 0: HAWK_NUM_STATIC_GBLS), ncs.ptr, ncs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_LS, ncs.len, ncs.ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, FMT_ENOENT_GBL_LS, ncs.len, ncs.ptr); return -1; } #endif @@ -2284,7 +2293,7 @@ static hawk_t* collect_globals (hawk_t* hawk) { /* special check if the first name is on the * same line when HAWK_NEWLINE is on */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EVARMS); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EVARMS); return HAWK_NULL; } @@ -2292,7 +2301,7 @@ static hawk_t* collect_globals (hawk_t* hawk) { if (!MATCH(hawk,TOK_IDENT)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EBADVAR, FMT_EBADVAR, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EBADVAR, FMT_EBADVAR, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } @@ -2316,7 +2325,7 @@ static hawk_t* collect_globals (hawk_t* hawk) if (!MATCH(hawk,TOK_COMMA)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ECOMMA, FMT_ECOMMA, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ECOMMA, FMT_ECOMMA, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } @@ -2330,13 +2339,13 @@ static hawk_t* collect_globals (hawk_t* hawk) return hawk; } -static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop) +static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int flags) { if (MATCH(hawk,TOK_NEWLINE)) { /* special check if the first name is on the * same line when HAWK_NEWLINE is on */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EVARMS); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EVARMS); return HAWK_NULL; } @@ -2347,7 +2356,7 @@ static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop) if (!MATCH(hawk,TOK_IDENT)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EBADVAR, FMT_EBADVAR, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EBADVAR, FMT_EBADVAR, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } @@ -2357,11 +2366,11 @@ static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop) * function f() { local length; } */ if (hawk_findfncwithoocs(hawk, &lcl) != HAWK_NULL) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EFNCRED, HAWK_T("intrinsic function '%.*js' redefined"), lcl.len, lcl.ptr); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EFNCRED, HAWK_T("intrinsic function '%.*js' redefined"), lcl.len, lcl.ptr); return HAWK_NULL; } - if (istop) + if (flags & PARSE_BLOCK_FLAG_IS_TOP) { /* check if it conflicts with a parameter name. * the first level declaration is treated as the same @@ -2369,7 +2378,7 @@ static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop) n = hawk_arr_search(hawk->parse.params, 0, lcl.ptr, lcl.len); if (n != HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EPARRED, HAWK_T("parameter '%.*js' redefined"), lcl.len, lcl.ptr); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EPARRED, HAWK_T("parameter '%.*js' redefined"), lcl.len, lcl.ptr); return HAWK_NULL; } } @@ -2381,7 +2390,7 @@ static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop) { if (hawk_comp_oochars(lcl.ptr, lcl.len, hawk->tree.cur_fun.ptr, hawk->tree.cur_fun.len, 0) == 0) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), lcl.len, lcl.ptr); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), lcl.len, lcl.ptr); return HAWK_NULL; } } @@ -2391,7 +2400,7 @@ static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop) n = hawk_arr_search(hawk->parse.lcls, nlcls, lcl.ptr, lcl.len); if (n != HAWK_ARR_NIL) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EDUPLCL, FMT_EDUPLCL, lcl.len, lcl.ptr); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EDUPLCL, FMT_EDUPLCL, lcl.len, lcl.ptr); return HAWK_NULL; } @@ -2402,20 +2411,20 @@ static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop) if (n < hawk->tree.ngbls_base) { /* it is a conflict only if it is one of a static global variable */ - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EDUPLCL, FMT_EDUPLCL, lcl.len, lcl.ptr); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EDUPLCL, FMT_EDUPLCL, lcl.len, lcl.ptr); return HAWK_NULL; } } if (HAWK_ARR_SIZE(hawk->parse.lcls) >= HAWK_MAX_LCLS) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELCLTM, HAWK_T("too many local variables defined - %.*js"), lcl.len, lcl.ptr); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELCLTM, HAWK_T("too many local variables defined - %.*js"), lcl.len, lcl.ptr); return HAWK_NULL; } if (hawk_arr_insert(hawk->parse.lcls, HAWK_ARR_SIZE(hawk->parse.lcls), lcl.ptr, lcl.len) == HAWK_ARR_NIL) { - ADJERR_LOC (hawk, &hawk->tok.loc); + ADJERR_LOC(hawk, &hawk->tok.loc); return HAWK_NULL; } @@ -2436,7 +2445,7 @@ static hawk_t* collect_locals (hawk_t* hawk, hawk_oow_t nlcls, int istop) if (!MATCH(hawk,TOK_COMMA)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ECOMMA, FMT_ECOMMA, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ECOMMA, FMT_ECOMMA, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } @@ -2460,7 +2469,7 @@ static hawk_nde_t* parse_if (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_LPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } if (get_token(hawk) <= -1) return HAWK_NULL; @@ -2471,7 +2480,7 @@ static hawk_nde_t* parse_if (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_RPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -2506,7 +2515,7 @@ static hawk_nde_t* parse_if (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_if_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -2519,9 +2528,217 @@ static hawk_nde_t* parse_if (hawk_t* hawk, const hawk_loc_t* xloc) return (hawk_nde_t*)nde; oops: - if (else_part) hawk_clrpt (hawk, else_part); - if (then_part) hawk_clrpt (hawk, then_part); - if (test) hawk_clrpt (hawk, test); + if (else_part) hawk_clrpt(hawk, else_part); + if (then_part) hawk_clrpt(hawk, then_part); + if (test) hawk_clrpt(hawk, test); + return HAWK_NULL; +} + +static hawk_nde_case_t* alloc_nde_case (hawk_t* hawk, const hawk_loc_t* xloc) +{ + hawk_nde_case_t* nde; + + nde = (hawk_nde_case_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); + if (HAWK_UNLIKELY(!nde)) + { + ADJERR_LOC(hawk, xloc); + goto oops; + } + + nde->type = HAWK_NDE_CASE; + nde->loc = *xloc; + nde->val = HAWK_NULL; + nde->action = HAWK_NULL; + + return nde; + +oops: + return HAWK_NULL; +} + +static hawk_nde_t* parse_switch (hawk_t* hawk, const hawk_loc_t* xloc) +{ + hawk_nde_switch_t* nde; + hawk_nde_t* test = HAWK_NULL; /* test to switch */ + hawk_nde_t* case_val = HAWK_NULL; /* value after case */ + hawk_nde_t* case_first = HAWK_NULL; + hawk_nde_t* case_last = HAWK_NULL; + hawk_nde_t* default_part = HAWK_NULL; + hawk_loc_t eloc; + + if (!MATCH(hawk,TOK_LPAREN)) + { + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + return HAWK_NULL; + } + if (get_token(hawk) <= -1) return HAWK_NULL; + + eloc = hawk->tok.loc; + test = parse_expr_withdc(hawk, &eloc); + if (HAWK_UNLIKELY(!test)) goto oops; + + if (!MATCH(hawk,TOK_RPAREN)) + { + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + goto oops; + } + + if (get_token(hawk) <= -1) goto oops; + + while (MATCH(hawk,TOK_NEWLINE)) + { + if (get_token(hawk) <= -1) goto oops; + } + if (!MATCH(hawk,TOK_LBRACE)) + { + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELBRACE, FMT_ELBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + goto oops; + } + + if (get_token(hawk) <= -1) goto oops; + + while (!MATCH(hawk, TOK_RBRACE)) + { + while (MATCH(hawk,TOK_NEWLINE)) + { + if (get_token(hawk) <= -1) goto oops; + } + + if (MATCH(hawk, TOK_CASE) || MATCH(hawk, TOK_DEFAULT)) + { + hawk_nde_case_t* vv; + hawk_nde_t* action_first = HAWK_NULL; + hawk_nde_t* action_last = HAWK_NULL; + + if (MATCH(hawk, TOK_CASE)) + { + if (get_token(hawk) <= -1) goto oops; + eloc = hawk->tok.loc; + case_val = parse_primary_literal(hawk, &eloc); + if (HAWK_UNLIKELY(!case_val)) goto oops; + } + else /* MATCH(hawk, TOK_DEFAULT) */ + { + if (default_part) + { + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EMULDFL, FMT_EMULDFL, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + goto oops; + } + case_val = HAWK_NULL; + if (get_token(hawk) <= -1) goto oops; + } + + if (!MATCH(hawk, TOK_COLON)) + { + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ECOLON, FMT_ECOLON, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + goto oops; + } + if (get_token(hawk) <= -1) goto oops; + + while (MATCH(hawk,TOK_NEWLINE)) + { + if (get_token(hawk) <= -1) goto oops; + } + + while (!MATCH(hawk, TOK_CASE) && !MATCH(hawk, TOK_DEFAULT) && !MATCH(hawk, TOK_RBRACE)) + { + hawk_nde_t* v; + + eloc = hawk->tok.loc; + hawk->parse.depth.swtch++; + v = parse_statement(hawk, &eloc); + hawk->parse.depth.swtch--; + if (!v) { + if (action_first) hawk_clrpt(hawk, action_first); + goto oops; + } + + if (!action_first) + { + action_first = v; + action_last = v; + } + else if (v->type == HAWK_NDE_NULL && v->type == action_last->type) + { + /* skip a successive null statement */ + hawk_freemem(hawk, v); + } + else + { + action_last->next = v; + action_last = v; + } + + while (MATCH(hawk,TOK_NEWLINE)) + { + if (get_token(hawk) <= -1) goto oops; + } + } + + vv = alloc_nde_case(hawk, &eloc); + if (!vv) + { + if (action_first) hawk_clrpt(hawk, action_first); + goto oops; + } + + vv->val = case_val; + vv->action = action_first; + + if (!case_val) default_part = (hawk_nde_t*)vv; + else case_val = HAWK_NULL; + + if (!case_first) + { + case_first = (hawk_nde_t*)vv; + case_last = (hawk_nde_t*)vv; + } + else + { + case_last->next = (hawk_nde_t*)vv; + case_last = (hawk_nde_t*)vv; + } + } + else + { + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EKWCASE, FMT_EKWCASE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + goto oops; + } + } + + while (MATCH(hawk,TOK_NEWLINE)) + { + if (get_token(hawk) <= -1) goto oops; + } + if (!MATCH(hawk, TOK_RBRACE)) + { + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERBRACE, FMT_ERBRACE, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + goto oops; + } + + if (get_token(hawk) <= -1) goto oops; + + + nde = (hawk_nde_switch_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); + if (HAWK_UNLIKELY(!nde)) + { + ADJERR_LOC(hawk, xloc); + goto oops; + } + + nde->type = HAWK_NDE_SWITCH; + nde->loc = *xloc; + nde->test = test; + nde->case_part = case_first; + nde->default_part = default_part; + + return (hawk_nde_t*)nde; + +oops: + if (case_val) hawk_clrpt(hawk, case_val); + if (case_first) hawk_clrpt(hawk, case_first); + /*if (default_part) hawk_clrpt(hawk, default_part); no need to crear it as it is in the case_first chanin */ + if (test) hawk_clrpt(hawk, test); return HAWK_NULL; } @@ -2534,7 +2751,7 @@ static hawk_nde_t* parse_while (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_LPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } if (get_token(hawk) <= -1) goto oops; @@ -2545,7 +2762,7 @@ static hawk_nde_t* parse_while (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_RPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -2558,7 +2775,7 @@ static hawk_nde_t* parse_while (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_while_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -2570,8 +2787,8 @@ static hawk_nde_t* parse_while (hawk_t* hawk, const hawk_loc_t* xloc) return (hawk_nde_t*)nde; oops: - if (body) hawk_clrpt (hawk, body); - if (test) hawk_clrpt (hawk, test); + if (body) hawk_clrpt(hawk, body); + if (test) hawk_clrpt(hawk, test); return HAWK_NULL; } @@ -2585,7 +2802,7 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_LPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } if (get_token(hawk) <= -1) return HAWK_NULL; @@ -2613,7 +2830,7 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_RPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -2626,7 +2843,7 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) nde_forin = (hawk_nde_forin_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde_forin)); if (HAWK_UNLIKELY(!nde_forin)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -2640,7 +2857,7 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_SEMICOLON)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ESCOLON, FMT_ESCOLON, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ESCOLON, FMT_ESCOLON, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } } @@ -2660,7 +2877,7 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_SEMICOLON)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ESCOLON, FMT_ESCOLON, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ESCOLON, FMT_ESCOLON, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } } @@ -2676,7 +2893,6 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) { { hawk_loc_t eloc; - eloc = hawk->tok.loc; incr = parse_expr_withdc(hawk, &eloc); if (HAWK_UNLIKELY(!incr)) goto oops; @@ -2684,7 +2900,7 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_RPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } } @@ -2692,13 +2908,13 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) if (get_token(hawk) <= -1) goto oops; ploc = hawk->tok.loc; - body = parse_statement (hawk, &ploc); + body = parse_statement(hawk, &ploc); if (body == HAWK_NULL) goto oops; nde_for = (hawk_nde_for_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde_for)); if (HAWK_UNLIKELY(!nde_for)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -2712,10 +2928,10 @@ static hawk_nde_t* parse_for (hawk_t* hawk, const hawk_loc_t* xloc) return (hawk_nde_t*)nde_for; oops: - if (init) hawk_clrpt (hawk, init); - if (test) hawk_clrpt (hawk, test); - if (incr) hawk_clrpt (hawk, incr); - if (body) hawk_clrpt (hawk, body); + if (init) hawk_clrpt(hawk, init); + if (test) hawk_clrpt(hawk, test); + if (incr) hawk_clrpt(hawk, incr); + if (body) hawk_clrpt(hawk, body); return HAWK_NULL; } @@ -2739,7 +2955,7 @@ static hawk_nde_t* parse_dowhile (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_WHILE)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EKWWHL, FMT_EKWWHL, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EKWWHL, FMT_EKWWHL, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -2747,19 +2963,19 @@ static hawk_nde_t* parse_dowhile (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_LPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } if (get_token(hawk) <= -1) goto oops; ploc = hawk->tok.loc; - test = parse_expr_withdc (hawk, &ploc); + test = parse_expr_withdc(hawk, &ploc); if (HAWK_UNLIKELY(!test)) goto oops; if (!MATCH(hawk,TOK_RPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -2768,7 +2984,7 @@ static hawk_nde_t* parse_dowhile (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_while_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -2780,8 +2996,8 @@ static hawk_nde_t* parse_dowhile (hawk_t* hawk, const hawk_loc_t* xloc) return (hawk_nde_t*)nde; oops: - if (body) hawk_clrpt (hawk, body); - if (test) hawk_clrpt (hawk, test); + if (body) hawk_clrpt(hawk, body); + if (test) hawk_clrpt(hawk, test); HAWK_ASSERT (nde == HAWK_NULL); return HAWK_NULL; } @@ -2791,16 +3007,16 @@ static hawk_nde_t* parse_break (hawk_t* hawk, const hawk_loc_t* xloc) hawk_nde_break_t* nde; HAWK_ASSERT (hawk->ptok.type == TOK_BREAK); - if (hawk->parse.depth.loop <= 0) + if (hawk->parse.depth.loop <= 0 && hawk->parse.depth.swtch <= 0) { - hawk_seterrnum (hawk, xloc, HAWK_EBREAK); + hawk_seterrnum(hawk, xloc, HAWK_EBREAK); return HAWK_NULL; } nde = (hawk_nde_break_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -2817,14 +3033,14 @@ static hawk_nde_t* parse_continue (hawk_t* hawk, const hawk_loc_t* xloc) HAWK_ASSERT (hawk->ptok.type == TOK_CONTINUE); if (hawk->parse.depth.loop <= 0) { - hawk_seterrnum (hawk, xloc, HAWK_ECONTINUE); + hawk_seterrnum(hawk, xloc, HAWK_ECONTINUE); return HAWK_NULL; } nde = (hawk_nde_continue_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -2844,7 +3060,7 @@ static hawk_nde_t* parse_return (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_return_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -2864,7 +3080,7 @@ static hawk_nde_t* parse_return (hawk_t* hawk, const hawk_loc_t* xloc) val = parse_expr_withdc(hawk, &eloc); if (HAWK_UNLIKELY(!val)) { - hawk_freemem (hawk, nde); + hawk_freemem(hawk, nde); return HAWK_NULL; } } @@ -2880,10 +3096,10 @@ static hawk_nde_t* parse_exit (hawk_t* hawk, const hawk_loc_t* xloc) HAWK_ASSERT (hawk->ptok.type == TOK_EXIT || hawk->ptok.type == TOK_XABORT); - nde = (hawk_nde_exit_t*) hawk_callocmem (hawk, HAWK_SIZEOF(*nde)); + nde = (hawk_nde_exit_t*) hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (nde == HAWK_NULL) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -2901,10 +3117,10 @@ static hawk_nde_t* parse_exit (hawk_t* hawk, const hawk_loc_t* xloc) hawk_loc_t eloc; eloc = hawk->tok.loc; - val = parse_expr_withdc (hawk, &eloc); + val = parse_expr_withdc(hawk, &eloc); if (val == HAWK_NULL) { - hawk_freemem (hawk, nde); + hawk_freemem(hawk, nde); return HAWK_NULL; } } @@ -2921,19 +3137,19 @@ static hawk_nde_t* parse_next (hawk_t* hawk, const hawk_loc_t* xloc) if (hawk->parse.id.block == PARSE_BEGIN_BLOCK) { - hawk_seterrnum (hawk, xloc, HAWK_ENEXTBEG); + hawk_seterrnum(hawk, xloc, HAWK_ENEXTBEG); return HAWK_NULL; } if (hawk->parse.id.block == PARSE_END_BLOCK) { - hawk_seterrnum (hawk, xloc, HAWK_ENEXTEND); + hawk_seterrnum(hawk, xloc, HAWK_ENEXTEND); return HAWK_NULL; } nde = (hawk_nde_next_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } nde->type = HAWK_NDE_NEXT; @@ -2948,19 +3164,19 @@ static hawk_nde_t* parse_nextfile (hawk_t* hawk, const hawk_loc_t* xloc, int out if (!out && hawk->parse.id.block == PARSE_BEGIN_BLOCK) { - hawk_seterrnum (hawk, xloc, HAWK_ENEXTFBEG); + hawk_seterrnum(hawk, xloc, HAWK_ENEXTFBEG); return HAWK_NULL; } if (!out && hawk->parse.id.block == PARSE_END_BLOCK) { - hawk_seterrnum (hawk, xloc, HAWK_ENEXTFEND); + hawk_seterrnum(hawk, xloc, HAWK_ENEXTFEND); return HAWK_NULL; } nde = (hawk_nde_nextfile_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -2991,7 +3207,7 @@ static hawk_nde_t* parse_delete (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_IDENT)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EIDENT, FMT_EIDENT, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EIDENT, FMT_EIDENT, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -3002,7 +3218,7 @@ static hawk_nde_t* parse_delete (hawk_t* hawk, const hawk_loc_t* xloc) if ((type == HAWK_NDE_DELETE && !is_var(var)) || (type == HAWK_NDE_RESET && !is_plain_var(var))) { - hawk_seterrnum (hawk, &dloc, HAWK_EBADARG); + hawk_seterrnum(hawk, &dloc, HAWK_EBADARG); goto oops; } @@ -3010,7 +3226,7 @@ static hawk_nde_t* parse_delete (hawk_t* hawk, const hawk_loc_t* xloc) { if (!MATCH(hawk,TOK_RPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -3020,7 +3236,7 @@ static hawk_nde_t* parse_delete (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_delete_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -3031,7 +3247,7 @@ static hawk_nde_t* parse_delete (hawk_t* hawk, const hawk_loc_t* xloc) return (hawk_nde_t*)nde; oops: - if (var) hawk_clrpt (hawk, var); + if (var) hawk_clrpt(hawk, var); return HAWK_NULL; } @@ -3203,7 +3419,7 @@ static hawk_nde_t* parse_print (hawk_t* hawk, const hawk_loc_t* xloc) out = ep->right; out_type = tab[i].out; - hawk_freemem (hawk, tmp); + hawk_freemem(hawk, tmp); break; } } @@ -3231,14 +3447,14 @@ static hawk_nde_t* parse_print (hawk_t* hawk, const hawk_loc_t* xloc) if (type == HAWK_NDE_PRINTF && !args) { - hawk_seterrnum (hawk, xloc, HAWK_ENOARG); + hawk_seterrnum(hawk, xloc, HAWK_ENOARG); goto oops; } nde = (hawk_nde_print_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -3251,13 +3467,12 @@ static hawk_nde_t* parse_print (hawk_t* hawk, const hawk_loc_t* xloc) return (hawk_nde_t*)nde; oops: - if (args) hawk_clrpt (hawk, args); - if (out) hawk_clrpt (hawk, out); + if (args) hawk_clrpt(hawk, args); + if (out) hawk_clrpt(hawk, out); return HAWK_NULL; } -static hawk_nde_t* parse_statement_nb ( - hawk_t* hawk, const hawk_loc_t* xloc) +static hawk_nde_t* parse_statement_nb (hawk_t* hawk, const hawk_loc_t* xloc) { /* parse a non-block statement */ hawk_nde_t* nde; @@ -3266,14 +3481,19 @@ static hawk_nde_t* parse_statement_nb ( if (MATCH(hawk,TOK_IF)) { if (get_token(hawk) <= -1) return HAWK_NULL; - return parse_if (hawk, xloc); + return parse_if(hawk, xloc); + } + else if (MATCH(hawk, TOK_SWITCH)) + { + if (get_token(hawk) <= -1) return HAWK_NULL; + return parse_switch(hawk, xloc); } else if (MATCH(hawk,TOK_WHILE)) { if (get_token(hawk) <= -1) return HAWK_NULL; hawk->parse.depth.loop++; - nde = parse_while (hawk, xloc); + nde = parse_while(hawk, xloc); hawk->parse.depth.loop--; return nde; @@ -3283,7 +3503,7 @@ static hawk_nde_t* parse_statement_nb ( if (get_token(hawk) <= -1) return HAWK_NULL; hawk->parse.depth.loop++; - nde = parse_for (hawk, xloc); + nde = parse_for(hawk, xloc); hawk->parse.depth.loop--; return nde; @@ -3295,7 +3515,7 @@ static hawk_nde_t* parse_statement_nb ( if (get_token(hawk) <= -1) return HAWK_NULL; hawk->parse.depth.loop++; - nde = parse_dowhile (hawk, xloc); + nde = parse_dowhile(hawk, xloc); hawk->parse.depth.loop--; return nde; @@ -3363,7 +3583,7 @@ static hawk_nde_t* parse_statement_nb ( /* check if a statement ends with a semicolon or */ if (get_token(hawk) <= -1) { - if (nde) hawk_clrpt (hawk, nde); + if (nde) hawk_clrpt(hawk, nde); return HAWK_NULL; } } @@ -3374,8 +3594,8 @@ static hawk_nde_t* parse_statement_nb ( } else { - if (nde) hawk_clrpt (hawk, nde); - hawk_seterrnum (hawk, &hawk->ptok.loc, HAWK_ESTMEND); + if (nde) hawk_clrpt(hawk, nde); + hawk_seterrnum(hawk, &hawk->ptok.loc, HAWK_ESTMEND); return HAWK_NULL; } @@ -3398,7 +3618,7 @@ static hawk_nde_t* parse_statement (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -3408,7 +3628,7 @@ static hawk_nde_t* parse_statement (hawk_t* hawk, const hawk_loc_t* xloc) if (get_token(hawk) <= -1) { - hawk_freemem (hawk, nde); + hawk_freemem(hawk, nde); return HAWK_NULL; } } @@ -3439,7 +3659,7 @@ static hawk_nde_t* parse_statement (hawk_t* hawk, const hawk_loc_t* xloc) hawk->parse.id.stmt = hawk->tok.type; /* proceed parsing the statement */ - nde = parse_statement_nb (hawk, &tloc); + nde = parse_statement_nb(hawk, &tloc); /* restore the statement id saved previously */ hawk->parse.id.stmt = old_id; @@ -3482,10 +3702,9 @@ static hawk_nde_t* parse_expr_basic (hawk_t* hawk, const hawk_loc_t* xloc) { hawk_nde_t* nde, * n1, * n2; - nde = parse_logical_or (hawk, xloc); + nde = parse_logical_or(hawk, xloc); if (nde == HAWK_NULL) return HAWK_NULL; - if (MATCH(hawk,TOK_QUEST)) if (MATCH(hawk,TOK_QUEST)) { hawk_loc_t eloc; @@ -3493,7 +3712,7 @@ static hawk_nde_t* parse_expr_basic (hawk_t* hawk, const hawk_loc_t* xloc) if (get_token(hawk) <= -1) { - hawk_clrpt (hawk, nde); + hawk_clrpt(hawk, nde); return HAWK_NULL; } @@ -3501,21 +3720,21 @@ static hawk_nde_t* parse_expr_basic (hawk_t* hawk, const hawk_loc_t* xloc) n1 = parse_expr_withdc(hawk, &eloc); if (n1 == HAWK_NULL) { - hawk_clrpt (hawk, nde); + hawk_clrpt(hawk, nde); return HAWK_NULL; } if (!MATCH(hawk,TOK_COLON)) { - hawk_clrpt (hawk, nde); - hawk_clrpt (hawk, n1); - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ECOLON, FMT_ECOLON, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_clrpt(hawk, nde); + hawk_clrpt(hawk, n1); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ECOLON, FMT_ECOLON, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } if (get_token(hawk) <= -1) { - hawk_clrpt (hawk, nde); - hawk_clrpt (hawk, n1); + hawk_clrpt(hawk, nde); + hawk_clrpt(hawk, n1); return HAWK_NULL; } @@ -3523,18 +3742,18 @@ static hawk_nde_t* parse_expr_basic (hawk_t* hawk, const hawk_loc_t* xloc) n2 = parse_expr_withdc(hawk, &eloc); if (n2 == HAWK_NULL) { - hawk_clrpt (hawk, nde); - hawk_clrpt (hawk, n1); + hawk_clrpt(hawk, nde); + hawk_clrpt(hawk, n1); return HAWK_NULL; } cnd = (hawk_nde_cnd_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*cnd)); if (cnd == HAWK_NULL) { - hawk_clrpt (hawk, nde); - hawk_clrpt (hawk, n1); - hawk_clrpt (hawk, n2); - ADJERR_LOC (hawk, xloc); + hawk_clrpt(hawk, nde); + hawk_clrpt(hawk, n1); + hawk_clrpt(hawk, n2); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -3557,7 +3776,7 @@ static hawk_nde_t* parse_expr (hawk_t* hawk, const hawk_loc_t* xloc) hawk_nde_ass_t* nde; int opcode; - x = parse_expr_basic (hawk, xloc); + x = parse_expr_basic(hawk, xloc); if (x == HAWK_NULL) return HAWK_NULL; opcode = assign_to_opcode (hawk); @@ -3570,14 +3789,14 @@ static hawk_nde_t* parse_expr (hawk_t* hawk, const hawk_loc_t* xloc) HAWK_ASSERT (x->next == HAWK_NULL); if (!is_var(x) && x->type != HAWK_NDE_POS) { - hawk_clrpt (hawk, x); - hawk_seterrnum (hawk, xloc, HAWK_EASSIGN); + hawk_clrpt(hawk, x); + hawk_seterrnum(hawk, xloc, HAWK_EASSIGN); return HAWK_NULL; } if (get_token(hawk) <= -1) { - hawk_clrpt (hawk, x); + hawk_clrpt(hawk, x); return HAWK_NULL; } @@ -3588,16 +3807,16 @@ static hawk_nde_t* parse_expr (hawk_t* hawk, const hawk_loc_t* xloc) } if (y == HAWK_NULL) { - hawk_clrpt (hawk, x); + hawk_clrpt(hawk, x); return HAWK_NULL; } nde = (hawk_nde_ass_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (nde == HAWK_NULL) { - hawk_clrpt (hawk, x); - hawk_clrpt (hawk, y); - ADJERR_LOC (hawk, xloc); + hawk_clrpt(hawk, x); + hawk_clrpt(hawk, y); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -3620,7 +3839,7 @@ static hawk_nde_t* parse_expr_withdc (hawk_t* hawk, const hawk_loc_t* xloc) if (hawk->opt.depth.s.expr_parse > 0 && hawk->parse.depth.expr >= hawk->opt.depth.s.expr_parse) { - hawk_seterrnum (hawk, xloc, HAWK_EEXPRNST); + hawk_seterrnum(hawk, xloc, HAWK_EEXPRNST); return HAWK_NULL; } @@ -3679,7 +3898,7 @@ static int fold_constants_for_binop ( case HAWK_BINOP_DIV: if (((hawk_nde_int_t*)right)->val == 0) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EDIVBY0); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EDIVBY0); fold = -2; /* error */ } else if (INT_BINOP_INT(left,%,right)) @@ -3697,7 +3916,7 @@ static int fold_constants_for_binop ( case HAWK_BINOP_IDIV: if (((hawk_nde_int_t*)right)->val == 0) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EDIVBY0); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EDIVBY0); fold = -2; /* error */ } else @@ -3846,7 +4065,7 @@ static hawk_nde_t* new_exp_bin_node ( { hawk_nde_exp_t* tmp; - tmp = (hawk_nde_exp_t*) hawk_callocmem (hawk, HAWK_SIZEOF(*tmp)); + tmp = (hawk_nde_exp_t*) hawk_callocmem(hawk, HAWK_SIZEOF(*tmp)); if (tmp) { tmp->type = HAWK_NDE_EXP_BIN; @@ -3855,7 +4074,7 @@ static hawk_nde_t* new_exp_bin_node ( tmp->left = left; tmp->right = right; } - else ADJERR_LOC (hawk, loc); + else ADJERR_LOC(hawk, loc); return (hawk_nde_t*)tmp; } @@ -3871,7 +4090,7 @@ static hawk_nde_t* new_int_node (hawk_t* hawk, hawk_int_t lv, const hawk_loc_t* tmp->loc = *loc; tmp->val = lv; } - else ADJERR_LOC (hawk, loc); + else ADJERR_LOC(hawk, loc); return (hawk_nde_t*)tmp; } @@ -3887,7 +4106,7 @@ static hawk_nde_t* new_flt_node (hawk_t* hawk, hawk_flt_t rv, const hawk_loc_t* tmp->loc = *loc; tmp->val = rv; } - else ADJERR_LOC (hawk, loc); + else ADJERR_LOC(hawk, loc); return (hawk_nde_t*)tmp; } @@ -3897,7 +4116,7 @@ static HAWK_INLINE void update_int_node (hawk_t* hawk, hawk_nde_int_t* node, haw node->val = lv; if (node->str) { - hawk_freemem (hawk, node->str); + hawk_freemem(hawk, node->str); node->str = HAWK_NULL; node->len = 0; } @@ -3908,7 +4127,7 @@ static HAWK_INLINE void update_flt_node (hawk_t* hawk, hawk_nde_flt_t* node, haw node->val = rv; if (node->str) { - hawk_freemem (hawk, node->str); + hawk_freemem(hawk, node->str); node->str = HAWK_NULL; node->len = 0; } @@ -3952,32 +4171,32 @@ static hawk_nde_t* parse_binary ( while (skipnl && MATCH(hawk,TOK_NEWLINE)); rloc = hawk->tok.loc; - right = next_level_func (hawk, &rloc); + right = next_level_func(hawk, &rloc); if (right == HAWK_NULL) goto oops; - fold = fold_constants_for_binop (hawk, left, right, opcode, &folded); + fold = fold_constants_for_binop(hawk, left, right, opcode, &folded); switch (fold) { case HAWK_NDE_INT: if (fold == left->type) { - hawk_clrpt (hawk, right); + hawk_clrpt(hawk, right); right = HAWK_NULL; - update_int_node (hawk, (hawk_nde_int_t*)left, folded.l); + update_int_node(hawk, (hawk_nde_int_t*)left, folded.l); } else if (fold == right->type) { - hawk_clrpt (hawk, left); - update_int_node (hawk, (hawk_nde_int_t*)right, folded.l); + hawk_clrpt(hawk, left); + update_int_node(hawk, (hawk_nde_int_t*)right, folded.l); left = right; right = HAWK_NULL; } else { - hawk_clrpt (hawk, right); right = HAWK_NULL; - hawk_clrpt (hawk, left); left = HAWK_NULL; + hawk_clrpt(hawk, right); right = HAWK_NULL; + hawk_clrpt(hawk, left); left = HAWK_NULL; - left = new_int_node (hawk, folded.l, xloc); + left = new_int_node(hawk, folded.l, xloc); if (left == HAWK_NULL) goto oops; } @@ -3986,23 +4205,23 @@ static hawk_nde_t* parse_binary ( case HAWK_NDE_FLT: if (fold == left->type) { - hawk_clrpt (hawk, right); + hawk_clrpt(hawk, right); right = HAWK_NULL; - update_flt_node (hawk, (hawk_nde_flt_t*)left, folded.r); + update_flt_node(hawk, (hawk_nde_flt_t*)left, folded.r); } else if (fold == right->type) { - hawk_clrpt (hawk, left); - update_flt_node (hawk, (hawk_nde_flt_t*)right, folded.r); + hawk_clrpt(hawk, left); + update_flt_node(hawk, (hawk_nde_flt_t*)right, folded.r); left = right; right = HAWK_NULL; } else { - hawk_clrpt (hawk, right); right = HAWK_NULL; - hawk_clrpt (hawk, left); left = HAWK_NULL; + hawk_clrpt(hawk, right); right = HAWK_NULL; + hawk_clrpt(hawk, left); left = HAWK_NULL; - left = new_flt_node (hawk, folded.r, xloc); + left = new_flt_node(hawk, folded.r, xloc); if (left == HAWK_NULL) goto oops; } @@ -4015,7 +4234,7 @@ static hawk_nde_t* parse_binary ( { hawk_nde_t* tmp; - tmp = new_exp_bin_node (hawk, xloc, opcode, left, right); + tmp = new_exp_bin_node(hawk, xloc, opcode, left, right); if (tmp == HAWK_NULL) goto oops; left = tmp; right = HAWK_NULL; break; @@ -4027,8 +4246,8 @@ static hawk_nde_t* parse_binary ( return left; oops: - if (right) hawk_clrpt (hawk, right); - if (left) hawk_clrpt (hawk, left); + if (right) hawk_clrpt(hawk, right); + if (left) hawk_clrpt(hawk, left); return HAWK_NULL; } @@ -4040,7 +4259,7 @@ static hawk_nde_t* parse_logical_or (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 1, map, parse_logical_and); + return parse_binary(hawk, xloc, 1, map, parse_logical_and); } static hawk_nde_t* parse_logical_and (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4051,7 +4270,7 @@ static hawk_nde_t* parse_logical_and (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 1, map, parse_in); + return parse_binary(hawk, xloc, 1, map, parse_in); } static hawk_nde_t* parse_in (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4063,14 +4282,14 @@ static hawk_nde_t* parse_in (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_regex_match); + return parse_binary(hawk, xloc, 0, map, parse_regex_match); */ hawk_nde_t* left = HAWK_NULL; hawk_nde_t* right = HAWK_NULL; hawk_loc_t rloc; - left = parse_regex_match (hawk, xloc); + left = parse_regex_match(hawk, xloc); if (left == HAWK_NULL) goto oops; do @@ -4091,7 +4310,7 @@ static hawk_nde_t* parse_in (hawk_t* hawk, const hawk_loc_t* xloc) if (!is_plain_var(right) && right->type != HAWK_NDE_XARGV) #endif { - hawk_seterrnum (hawk, &rloc, HAWK_ENOTVAR); + hawk_seterrnum(hawk, &rloc, HAWK_ENOTVAR); goto oops; } @@ -4106,8 +4325,8 @@ static hawk_nde_t* parse_in (hawk_t* hawk, const hawk_loc_t* xloc) return left; oops: - if (right) hawk_clrpt (hawk, right); - if (left) hawk_clrpt (hawk, left); + if (right) hawk_clrpt(hawk, right); + if (left) hawk_clrpt(hawk, left); return HAWK_NULL; } @@ -4120,7 +4339,7 @@ static hawk_nde_t* parse_regex_match (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 }, }; - return parse_binary (hawk, xloc, 0, map, parse_bitwise_or); + return parse_binary(hawk, xloc, 0, map, parse_bitwise_or); } static hawk_nde_t* parse_bitwise_or (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4131,7 +4350,7 @@ static hawk_nde_t* parse_bitwise_or (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_bitwise_xor); + return parse_binary(hawk, xloc, 0, map, parse_bitwise_xor); } static hawk_nde_t* parse_bitwise_xor (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4142,7 +4361,7 @@ static hawk_nde_t* parse_bitwise_xor (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_bitwise_and); + return parse_binary(hawk, xloc, 0, map, parse_bitwise_and); } static hawk_nde_t* parse_bitwise_and (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4153,7 +4372,7 @@ static hawk_nde_t* parse_bitwise_and (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_equality); + return parse_binary(hawk, xloc, 0, map, parse_equality); } static hawk_nde_t* parse_equality (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4167,7 +4386,7 @@ static hawk_nde_t* parse_equality (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_relational); + return parse_binary(hawk, xloc, 0, map, parse_relational); } static hawk_nde_t* parse_relational (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4181,7 +4400,7 @@ static hawk_nde_t* parse_relational (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_shift); + return parse_binary(hawk, xloc, 0, map, parse_shift); } static hawk_nde_t* parse_shift (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4193,7 +4412,7 @@ static hawk_nde_t* parse_shift (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_concat); + return parse_binary(hawk, xloc, 0, map, parse_concat); } static hawk_nde_t* parse_concat (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4252,8 +4471,8 @@ static hawk_nde_t* parse_concat (hawk_t* hawk, const hawk_loc_t* xloc) return left; oops: - if (right) hawk_clrpt (hawk, right); - if (left) hawk_clrpt (hawk, left); + if (right) hawk_clrpt(hawk, right); + if (left) hawk_clrpt(hawk, left); return HAWK_NULL; } @@ -4266,7 +4485,7 @@ static hawk_nde_t* parse_additive (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_multiplicative); + return parse_binary(hawk, xloc, 0, map, parse_multiplicative); } static hawk_nde_t* parse_multiplicative (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4281,7 +4500,7 @@ static hawk_nde_t* parse_multiplicative (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_unary); + return parse_binary(hawk, xloc, 0, map, parse_unary); } static hawk_nde_t* parse_unary (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4303,7 +4522,7 @@ static hawk_nde_t* parse_unary (hawk_t* hawk, const hawk_loc_t* xloc) if (hawk->opt.depth.s.expr_parse > 0 && hawk->parse.depth.expr >= hawk->opt.depth.s.expr_parse) { - hawk_seterrnum (hawk, xloc, HAWK_EEXPRNST); + hawk_seterrnum(hawk, xloc, HAWK_EEXPRNST); return HAWK_NULL; } @@ -4311,7 +4530,7 @@ static hawk_nde_t* parse_unary (hawk_t* hawk, const hawk_loc_t* xloc) hawk->parse.depth.expr++; uloc = hawk->tok.loc; - left = parse_unary (hawk, &uloc); + left = parse_unary(hawk, &uloc); hawk->parse.depth.expr--; if (left == HAWK_NULL) return HAWK_NULL; @@ -4375,27 +4594,27 @@ static hawk_nde_t* parse_unary (hawk_t* hawk, const hawk_loc_t* xloc) case HAWK_NDE_INT: if (left->type == fold) { - update_int_node (hawk, (hawk_nde_int_t*)left, folded.l); + update_int_node(hawk, (hawk_nde_int_t*)left, folded.l); return left; } else { HAWK_ASSERT (left->type == HAWK_NDE_FLT); - hawk_clrpt (hawk, left); - return new_int_node (hawk, folded.l, xloc); + hawk_clrpt(hawk, left); + return new_int_node(hawk, folded.l, xloc); } case HAWK_NDE_FLT: if (left->type == fold) { - update_flt_node (hawk, (hawk_nde_flt_t*)left, folded.r); + update_flt_node(hawk, (hawk_nde_flt_t*)left, folded.r); return left; } else { HAWK_ASSERT (left->type == HAWK_NDE_INT); - hawk_clrpt (hawk, left); - return new_flt_node (hawk, folded.r, xloc); + hawk_clrpt(hawk, left); + return new_flt_node(hawk, folded.r, xloc); } default: @@ -4405,8 +4624,8 @@ static hawk_nde_t* parse_unary (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_exp_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (nde == HAWK_NULL) { - hawk_clrpt (hawk, left); - ADJERR_LOC (hawk, xloc); + hawk_clrpt(hawk, left); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -4429,7 +4648,7 @@ static hawk_nde_t* parse_exponent (hawk_t* hawk, const hawk_loc_t* xloc) { TOK_EOF, 0 } }; - return parse_binary (hawk, xloc, 0, map, parse_unary_exp); + return parse_binary(hawk, xloc, 0, map, parse_unary_exp); } static hawk_nde_t* parse_unary_exp (hawk_t* hawk, const hawk_loc_t* xloc) @@ -4444,12 +4663,12 @@ static hawk_nde_t* parse_unary_exp (hawk_t* hawk, const hawk_loc_t* xloc) (MATCH(hawk,TOK_LNOT))? HAWK_UNROP_LNOT: (MATCH(hawk,TOK_TILDE))? HAWK_UNROP_BNOT: -1; /* ~ in the unary context is a bitwise-not operator */ - if (opcode <= -1) return parse_increment (hawk, xloc); + if (opcode <= -1) return parse_increment(hawk, xloc); if (hawk->opt.depth.s.expr_parse > 0 && hawk->parse.depth.expr >= hawk->opt.depth.s.expr_parse) { - hawk_seterrnum (hawk, xloc, HAWK_EEXPRNST); + hawk_seterrnum(hawk, xloc, HAWK_EEXPRNST); return HAWK_NULL; } @@ -4457,15 +4676,15 @@ static hawk_nde_t* parse_unary_exp (hawk_t* hawk, const hawk_loc_t* xloc) hawk->parse.depth.expr++; uloc = hawk->tok.loc; - left = parse_unary (hawk, &uloc); + left = parse_unary(hawk, &uloc); hawk->parse.depth.expr--; if (left == HAWK_NULL) return HAWK_NULL; - nde = (hawk_nde_exp_t*) hawk_callocmem (hawk, HAWK_SIZEOF(*nde)); + nde = (hawk_nde_exp_t*) hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (nde == HAWK_NULL) { - hawk_clrpt (hawk, left); - ADJERR_LOC (hawk, xloc); + hawk_clrpt(hawk, left); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -4509,8 +4728,8 @@ static hawk_nde_t* parse_increment (hawk_t* hawk, const hawk_loc_t* xloc) { /* both prefix and postfix increment operator. * not allowed */ - hawk_clrpt (hawk, left); - hawk_seterrnum (hawk, xloc, HAWK_EPREPST); + hawk_clrpt(hawk, left); + hawk_seterrnum(hawk, xloc, HAWK_EPREPST); return HAWK_NULL; } } @@ -4539,7 +4758,7 @@ static hawk_nde_t* parse_increment (hawk_t* hawk, const hawk_loc_t* xloc) /* let's do it later if (get_token(hawk) <= -1) { - hawk_clrpt (hawk, left); + hawk_clrpt(hawk, left); return HAWK_NULL; } */ @@ -4555,8 +4774,8 @@ static hawk_nde_t* parse_increment (hawk_t* hawk, const hawk_loc_t* xloc) } else { - hawk_clrpt (hawk, left); - hawk_seterrnum (hawk, xloc, HAWK_EINCDECOPR); + hawk_clrpt(hawk, left); + hawk_seterrnum(hawk, xloc, HAWK_EINCDECOPR); return HAWK_NULL; } } @@ -4566,16 +4785,16 @@ static hawk_nde_t* parse_increment (hawk_t* hawk, const hawk_loc_t* xloc) /* consume the postfix operator */ if (get_token(hawk) <= -1) { - hawk_clrpt (hawk, left); + hawk_clrpt(hawk, left); return HAWK_NULL; } } - nde = (hawk_nde_exp_t*) hawk_callocmem (hawk, HAWK_SIZEOF(*nde)); + nde = (hawk_nde_exp_t*) hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (nde == HAWK_NULL) { - hawk_clrpt (hawk, left); - ADJERR_LOC (hawk, xloc); + hawk_clrpt(hawk, left); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -4647,7 +4866,7 @@ static hawk_nde_t* parse_primary_char (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_char_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -4661,7 +4880,7 @@ static hawk_nde_t* parse_primary_char (hawk_t* hawk, const hawk_loc_t* xloc) oops: HAWK_ASSERT (nde != HAWK_NULL); - hawk_freemem (hawk, nde); + hawk_freemem(hawk, nde); return HAWK_NULL; } @@ -4672,7 +4891,7 @@ static hawk_nde_t* parse_primary_bchr (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_bchr_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -4686,11 +4905,11 @@ static hawk_nde_t* parse_primary_bchr (hawk_t* hawk, const hawk_loc_t* xloc) oops: HAWK_ASSERT (nde != HAWK_NULL); - hawk_freemem (hawk, nde); + hawk_freemem(hawk, nde); return HAWK_NULL; } -static hawk_nde_t* parse_primary_int (hawk_t* hawk, const hawk_loc_t* xloc) +static hawk_nde_t* parse_primary_int (hawk_t* hawk, const hawk_loc_t* xloc) { hawk_nde_int_t* nde; @@ -4713,8 +4932,8 @@ static hawk_nde_t* parse_primary_int (hawk_t* hawk, const hawk_loc_t* xloc) oops: HAWK_ASSERT (nde != HAWK_NULL); - if (nde->str) hawk_freemem (hawk, nde->str); - hawk_freemem (hawk, nde); + if (nde->str) hawk_freemem(hawk, nde->str); + hawk_freemem(hawk, nde); return HAWK_NULL; } @@ -4743,8 +4962,8 @@ static hawk_nde_t* parse_primary_flt (hawk_t* hawk, const hawk_loc_t* xloc) oops: HAWK_ASSERT (nde != HAWK_NULL); - if (nde->str) hawk_freemem (hawk, nde->str); - hawk_freemem (hawk, nde); + if (nde->str) hawk_freemem(hawk, nde->str); + hawk_freemem(hawk, nde); return HAWK_NULL; } @@ -4752,10 +4971,10 @@ static hawk_nde_t* parse_primary_str (hawk_t* hawk, const hawk_loc_t* xloc) { hawk_nde_str_t* nde; - nde = (hawk_nde_str_t*) hawk_callocmem (hawk, HAWK_SIZEOF(*nde)); + nde = (hawk_nde_str_t*) hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (nde == HAWK_NULL) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -4769,8 +4988,8 @@ static hawk_nde_t* parse_primary_str (hawk_t* hawk, const hawk_loc_t* xloc) oops: HAWK_ASSERT (nde != HAWK_NULL); - if (nde->ptr) hawk_freemem (hawk, nde->ptr); - hawk_freemem (hawk, nde); + if (nde->ptr) hawk_freemem(hawk, nde->ptr); + hawk_freemem(hawk, nde); return HAWK_NULL; } @@ -4781,7 +5000,7 @@ static hawk_nde_t* parse_primary_mbs (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_mbs_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -4793,7 +5012,7 @@ static hawk_nde_t* parse_primary_mbs (hawk_t* hawk, const hawk_loc_t* xloc) nde->ptr = hawk_dupoocs(hawk, HAWK_OOECS_OOCS(hawk->tok.name)); if (!nde->ptr) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } #else @@ -4804,7 +5023,7 @@ static hawk_nde_t* parse_primary_mbs (hawk_t* hawk, const hawk_loc_t* xloc) nde->ptr = hawk_allocmem(hawk, (nde->len + 1) * HAWK_SIZEOF(*nde->ptr)); if (!nde->ptr) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -4819,8 +5038,8 @@ static hawk_nde_t* parse_primary_mbs (hawk_t* hawk, const hawk_loc_t* xloc) oops: HAWK_ASSERT (nde != HAWK_NULL); - if (nde->ptr) hawk_freemem (hawk, nde->ptr); - hawk_freemem (hawk, nde); + if (nde->ptr) hawk_freemem(hawk, nde->ptr); + hawk_freemem(hawk, nde); return HAWK_NULL; } @@ -4836,19 +5055,19 @@ static hawk_nde_t* parse_primary_rex (hawk_t* hawk, const hawk_loc_t* xloc) if (MATCH(hawk,TOK_DIV_ASSN) && hawk_ooecs_ccat(hawk->tok.name, HAWK_T('=')) == (hawk_oow_t)-1) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } - SET_TOKEN_TYPE (hawk, &hawk->tok, TOK_REX); - if (get_rexstr (hawk, &hawk->tok) <= -1) return HAWK_NULL; + SET_TOKEN_TYPE(hawk, &hawk->tok, TOK_REX); + if (get_rexstr(hawk, &hawk->tok) <= -1) return HAWK_NULL; HAWK_ASSERT (MATCH(hawk,TOK_REX)); nde = (hawk_nde_rex_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (nde == HAWK_NULL) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -4860,7 +5079,7 @@ static hawk_nde_t* parse_primary_rex (hawk_t* hawk, const hawk_loc_t* xloc) if (hawk_buildrex(hawk, HAWK_OOECS_PTR(hawk->tok.name), HAWK_OOECS_LEN(hawk->tok.name), &nde->code[0], &nde->code[1]) <= -1) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -4870,9 +5089,9 @@ static hawk_nde_t* parse_primary_rex (hawk_t* hawk, const hawk_loc_t* xloc) oops: HAWK_ASSERT (nde != HAWK_NULL); - if (nde->code[0]) hawk_freerex (hawk, nde->code[0], nde->code[1]); - if (nde->str.ptr) hawk_freemem (hawk, nde->str.ptr); - hawk_freemem (hawk, nde); + if (nde->code[0]) hawk_freerex(hawk, nde->code[0], nde->code[1]); + if (nde->str.ptr) hawk_freemem(hawk, nde->str.ptr); + hawk_freemem(hawk, nde); return HAWK_NULL; } @@ -4884,7 +5103,7 @@ static hawk_nde_t* parse_primary_positional (hawk_t* hawk, const hawk_loc_t* xlo nde = (hawk_nde_pos_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -4902,8 +5121,8 @@ static hawk_nde_t* parse_primary_positional (hawk_t* hawk, const hawk_loc_t* xlo oops: if (nde) { - if (nde->val) hawk_clrpt (hawk, nde->val); - hawk_freemem (hawk, nde); + if (nde->val) hawk_clrpt(hawk, nde->val); + hawk_freemem(hawk, nde); } return HAWK_NULL; } @@ -4952,7 +5171,7 @@ static hawk_nde_t* parse_primary_lparen (hawk_t* hawk, const hawk_loc_t* xloc) /* check for the closing parenthesis */ if (!MATCH(hawk,TOK_RPAREN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERPAREN, FMT_ERPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -4975,7 +5194,7 @@ static hawk_nde_t* parse_primary_lparen (hawk_t* hawk, const hawk_loc_t* xloc) { if (!(hawk->opt.trait & HAWK_TOLERANT) && !MATCH(hawk,TOK_IN)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EKWIN, FMT_EKWIN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EKWIN, FMT_EKWIN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } } @@ -4983,7 +5202,7 @@ static hawk_nde_t* parse_primary_lparen (hawk_t* hawk, const hawk_loc_t* xloc) tmp = (hawk_nde_grp_t*)hawk_callocmem(hawk, HAWK_SIZEOF(hawk_nde_grp_t)); if (HAWK_UNLIKELY(!tmp)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -4998,7 +5217,7 @@ static hawk_nde_t* parse_primary_lparen (hawk_t* hawk, const hawk_loc_t* xloc) return nde; oops: - if (nde) hawk_clrpt (hawk, nde); + if (nde) hawk_clrpt(hawk, nde); return HAWK_NULL; } @@ -5059,7 +5278,7 @@ static hawk_nde_t* parse_primary_getline (hawk_t* hawk, const hawk_loc_t* xloc, * getline a() * getline sys::WNOHANG */ - hawk_seterrnum (hawk, &ploc, HAWK_EBADARG); + hawk_seterrnum(hawk, &ploc, HAWK_EBADARG); goto oops; } } @@ -5072,7 +5291,7 @@ novar: ploc = hawk->tok.loc; /* TODO: is this correct? */ - /*nde->in = parse_expr_withdc (hawk, &ploc);*/ + /*nde->in = parse_expr_withdc(hawk, &ploc);*/ nde->in = parse_primary(hawk, &ploc); if (HAWK_UNLIKELY(!nde->in)) goto oops; @@ -5084,9 +5303,9 @@ novar: oops: if (nde) { - if (nde->in) hawk_clrpt (hawk, nde->in); - if (nde->var) hawk_clrpt (hawk, nde->var); - hawk_freemem (hawk, nde); + if (nde->in) hawk_clrpt(hawk, nde->in); + if (nde->var) hawk_clrpt(hawk, nde->var); + hawk_freemem(hawk, nde); } return HAWK_NULL; } @@ -5098,7 +5317,7 @@ static hawk_nde_t* parse_primary_xnil (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_xnil_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -5111,7 +5330,7 @@ static hawk_nde_t* parse_primary_xnil (hawk_t* hawk, const hawk_loc_t* xloc) oops: HAWK_ASSERT (nde != HAWK_NULL); - hawk_freemem (hawk, nde); + hawk_freemem(hawk, nde); return HAWK_NULL; } @@ -5149,7 +5368,7 @@ static hawk_nde_t* parse_primary_xarg (hawk_t* hawk, const hawk_loc_t* xloc) if (!MATCH(hawk,TOK_RBRACK)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERBRACK, FMT_ERBRACK, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERBRACK, FMT_ERBRACK, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -5169,7 +5388,7 @@ static hawk_nde_t* parse_primary_xarg (hawk_t* hawk, const hawk_loc_t* xloc) xargvidx = (hawk_nde_xargvidx_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*xargvidx)); if (HAWK_UNLIKELY(!xargvidx)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -5184,7 +5403,7 @@ static hawk_nde_t* parse_primary_xarg (hawk_t* hawk, const hawk_loc_t* xloc) nde = hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -5195,11 +5414,44 @@ static hawk_nde_t* parse_primary_xarg (hawk_t* hawk, const hawk_loc_t* xloc) return (hawk_nde_t*)nde; oops: - if (nde) hawk_freemem (hawk, nde); /* tricky to call hawk_clrpt() on nde due to pos */ - if (pos) hawk_clrpt (hawk, pos); + if (nde) hawk_freemem(hawk, nde); /* tricky to call hawk_clrpt() on nde due to pos */ + if (pos) hawk_clrpt(hawk, pos); return HAWK_NULL; } +static hawk_nde_t* parse_primary_literal (hawk_t* hawk, const hawk_loc_t* xloc) +{ + switch (hawk->tok.type) + { + case TOK_CHAR: + return parse_primary_char(hawk, xloc); + + case TOK_BCHR: + return parse_primary_bchr(hawk, xloc); + + case TOK_INT: + return parse_primary_int(hawk, xloc); + + case TOK_FLT: + return parse_primary_flt(hawk, xloc); + + case TOK_STR: + return parse_primary_str(hawk, xloc); + + case TOK_MBS: + return parse_primary_mbs(hawk, xloc); + + default: + { + hawk_tok_t* xtok; + + xtok = MATCH(hawk,TOK_NEWLINE)? &hawk->ptok: &hawk->tok; + hawk_seterrfmt(hawk, &xtok->loc, HAWK_EEXPRNR, HAWK_T("literal expression not recognized around '%.*js'"), HAWK_OOECS_LEN(xtok->name), HAWK_OOECS_PTR(xtok->name)); + return HAWK_NULL; + } + } +} + static hawk_nde_t* parse_primary_nopipe (hawk_t* hawk, const hawk_loc_t* xloc) { switch (hawk->tok.type) @@ -5263,7 +5515,7 @@ static hawk_nde_t* parse_primary_nopipe (hawk_t* hawk, const hawk_loc_t* xloc) /* valid expression introducer is expected */ xtok = MATCH(hawk,TOK_NEWLINE)? &hawk->ptok: &hawk->tok; - hawk_seterrfmt (hawk, &xtok->loc, HAWK_EEXPRNR, HAWK_T("expression not recognized around '%.*js'"), HAWK_OOECS_LEN(xtok->name), HAWK_OOECS_PTR(xtok->name)); + hawk_seterrfmt(hawk, &xtok->loc, HAWK_EEXPRNR, HAWK_T("expression not recognized around '%.*js'"), HAWK_OOECS_LEN(xtok->name), HAWK_OOECS_PTR(xtok->name)); return HAWK_NULL; } } @@ -5346,7 +5598,7 @@ static hawk_nde_t* parse_primary (hawk_t* hawk, const hawk_loc_t* xloc) { /* fucntion a() {} * print ("ls -laF" | getline a()) */ - hawk_seterrnum (hawk, &ploc, HAWK_EBADARG); + hawk_seterrnum(hawk, &ploc, HAWK_EBADARG); goto oops; } } @@ -5355,7 +5607,7 @@ static hawk_nde_t* parse_primary (hawk_t* hawk, const hawk_loc_t* xloc) nde = (hawk_nde_getline_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -5374,8 +5626,8 @@ static hawk_nde_t* parse_primary (hawk_t* hawk, const hawk_loc_t* xloc) return left; oops: - if (var) hawk_clrpt (hawk, var); - hawk_clrpt (hawk, left); + if (var) hawk_clrpt(hawk, var); + hawk_clrpt(hawk, left); return HAWK_NULL; } @@ -5408,7 +5660,7 @@ static hawk_nde_t* parse_variable (hawk_t* hawk, const hawk_loc_t* xloc, hawk_nd * the value of var_xxx and 1. */ /* a variable is not a function */ - hawk_seterrfmt (hawk, xloc, HAWK_EFUNNAM, HAWK_T("'%.*js' not a valid function name"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EFUNNAM, HAWK_T("'%.*js' not a valid function name"), name->len, name->ptr); return HAWK_NULL; } } @@ -5416,7 +5668,7 @@ static hawk_nde_t* parse_variable (hawk_t* hawk, const hawk_loc_t* xloc, hawk_nd nde = (hawk_nde_var_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -5451,7 +5703,7 @@ static int dup_ident_and_get_next (hawk_t* hawk, const hawk_loc_t* xloc, hawk_oo name[nsegs].ptr = hawk_dupoochars(hawk, name[nsegs].ptr, name[nsegs].len); if (!name[nsegs].ptr) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -5470,13 +5722,13 @@ static int dup_ident_and_get_next (hawk_t* hawk, const hawk_loc_t* xloc, hawk_oo * TOK_XGLOBAL to TOK_XRESET are excuded from the check for that reason. */ if (!MATCH(hawk, TOK_IDENT) && !(MATCH_RANGE(hawk, TOK_BEGIN, TOK_GETLINE))) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EIDENT, FMT_EIDENT, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EIDENT, FMT_EIDENT, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } if (nsegs >= max) { - hawk_seterrnum (hawk, xloc, HAWK_ESEGTM); + hawk_seterrnum(hawk, xloc, HAWK_ESEGTM); goto oops; } } @@ -5485,7 +5737,7 @@ static int dup_ident_and_get_next (hawk_t* hawk, const hawk_loc_t* xloc, hawk_oo return nsegs; oops: - while (nsegs > 0) hawk_freemem (hawk, name[--nsegs].ptr); + while (nsegs > 0) hawk_freemem(hawk, name[--nsegs].ptr); return -1; } @@ -5498,7 +5750,7 @@ static hawk_nde_t* parse_fun_as_value (hawk_t* hawk, const hawk_oocs_t* name, c nde = (hawk_nde_fun_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -5550,7 +5802,7 @@ static hawk_nde_t* parse_primary_ident_noseg (hawk_t* hawk, const hawk_loc_t* xl else { /* an intrinsic function should be in the form of the function call */ - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); } } /* now we know that name is a normal identifier. */ @@ -5596,7 +5848,7 @@ static hawk_nde_t* parse_primary_ident_noseg (hawk_t* hawk, const hawk_loc_t* xl #if defined(HAWK_ENABLE_FUN_AS_VALUE) nde = parse_fun_as_value(hawk, name, xloc, funptr); #else - hawk_seterrfmt (hawk, xloc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), name->len, name->ptr); #endif } } @@ -5626,7 +5878,7 @@ static hawk_nde_t* parse_primary_ident_noseg (hawk_t* hawk, const hawk_loc_t* xl is_fncall_var = 1; goto named_var; #else - hawk_seterrfmt (hawk, xloc, HAWK_EVARRED, HAWK_T("variable '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EVARRED, HAWK_T("variable '%.*js' redefined"), name->len, name->ptr); #endif } else @@ -5647,15 +5899,15 @@ static hawk_nde_t* parse_primary_ident_noseg (hawk_t* hawk, const hawk_loc_t* xl * as concatention by blanks. so we handle the name as a named * variable. */ tmp = (hawk_nde_var_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*tmp)); - if (HAWK_UNLIKELY(!tmp)) ADJERR_LOC (hawk, xloc); + if (HAWK_UNLIKELY(!tmp)) ADJERR_LOC(hawk, xloc); else { /* collect unique instances of a named variable * for reference */ if (hawk_htb_upsert(hawk->parse.named, name->ptr, name->len, HAWK_NULL, 0) == HAWK_NULL) { - ADJERR_LOC (hawk, xloc); - hawk_freemem (hawk, tmp); + ADJERR_LOC(hawk, xloc); + hawk_freemem(hawk, tmp); } else { @@ -5686,7 +5938,7 @@ static hawk_nde_t* parse_primary_ident_noseg (hawk_t* hawk, const hawk_loc_t* xl else { /* undefined variable */ - hawk_seterrfmt (hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, name->len, name->ptr); } } } @@ -5706,7 +5958,7 @@ static hawk_nde_t* parse_primary_ident_segs (hawk_t* hawk, const hawk_loc_t* xlo mod = query_module(hawk, segs, nsegs, &sym); if (!mod) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); } else { @@ -5715,7 +5967,7 @@ static hawk_nde_t* parse_primary_ident_segs (hawk_t* hawk, const hawk_loc_t* xlo case HAWK_MOD_FNC: if ((hawk->opt.trait & sym.u.fnc_.trait) != sym.u.fnc_.trait) { - hawk_seterrfmt (hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, full->len, full->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, full->len, full->ptr); break; } @@ -5730,14 +5982,14 @@ static hawk_nde_t* parse_primary_ident_segs (hawk_t* hawk, const hawk_loc_t* xlo } else { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELPAREN, FMT_ELPAREN, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); } break; case HAWK_MOD_INT: if ((hawk->opt.trait & sym.u.int_.trait) != sym.u.int_.trait) { - hawk_seterrfmt (hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, full->len, full->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, full->len, full->ptr); break; } @@ -5748,7 +6000,7 @@ static hawk_nde_t* parse_primary_ident_segs (hawk_t* hawk, const hawk_loc_t* xlo case HAWK_MOD_FLT: if ((hawk->opt.trait & sym.u.flt_.trait) != sym.u.flt_.trait) { - hawk_seterrfmt (hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, full->len, full->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, full->len, full->ptr); break; } @@ -5758,7 +6010,7 @@ static hawk_nde_t* parse_primary_ident_segs (hawk_t* hawk, const hawk_loc_t* xlo default: /* TODO: support MOD_VAR */ - hawk_seterrfmt (hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, full->len, full->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, full->len, full->ptr); break; } } @@ -5780,7 +6032,7 @@ static hawk_nde_t* parse_primary_ident (hawk_t* hawk, const hawk_loc_t* xloc) if (nsegs <= 1) { nde = parse_primary_ident_noseg(hawk, xloc, &name[0]); - if (!nde) hawk_freemem (hawk, name[0].ptr); + if (!nde) hawk_freemem(hawk, name[0].ptr); } else { @@ -5806,17 +6058,17 @@ static hawk_nde_t* parse_primary_ident (hawk_t* hawk, const hawk_loc_t* xloc) { /* the FNC node takes the full name but other * nodes don't. so i need to free it. i know it's ugly. */ - hawk_freemem (hawk, full.ptr); + hawk_freemem(hawk, full.ptr); } } else { /* error number is set in hawk_allocmem */ - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); } /* i don't need the name segments */ - while (nsegs > 0) hawk_freemem (hawk, name[--nsegs].ptr); + while (nsegs > 0) hawk_freemem(hawk, name[--nsegs].ptr); } return nde; @@ -5838,7 +6090,7 @@ more_idx: { if (get_token(hawk) <= -1) { - if (idx) hawk_clrpt (hawk, idx); + if (idx) hawk_clrpt(hawk, idx); return HAWK_NULL; } @@ -5849,7 +6101,7 @@ more_idx: } if (HAWK_UNLIKELY(!tmp)) { - if (idx) hawk_clrpt (hawk, idx); + if (idx) hawk_clrpt(hawk, idx); return HAWK_NULL; } @@ -5873,14 +6125,14 @@ more_idx: if (!MATCH(hawk,TOK_RBRACK)) { - hawk_clrpt (hawk, idx); - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ERBRACK, FMT_ERBRACK, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_clrpt(hawk, idx); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ERBRACK, FMT_ERBRACK, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return HAWK_NULL; } if (get_token(hawk) <= -1) { - hawk_clrpt (hawk, idx); + hawk_clrpt(hawk, idx); return HAWK_NULL; } @@ -5892,8 +6144,8 @@ more_idx: tmp = (hawk_nde_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*tmp)); if (HAWK_UNLIKELY(!tmp)) { - hawk_clrpt (hawk, idx); - ADJERR_LOC (hawk, xloc); + hawk_clrpt(hawk, idx); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } tmp->type = HAWK_NDE_NULL; @@ -5910,8 +6162,8 @@ more_idx: nde = (hawk_nde_var_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde)); if (HAWK_UNLIKELY(!nde)) { - hawk_clrpt (hawk, idx); - ADJERR_LOC (hawk, xloc); + hawk_clrpt(hawk, idx); + ADJERR_LOC(hawk, xloc); return HAWK_NULL; } @@ -5967,11 +6219,11 @@ more_idx: switch (fnname) { case FNTYPE_FNC: - hawk_seterrfmt (hawk, xloc, HAWK_EFNCRED, HAWK_T("intrinsic function '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EFNCRED, HAWK_T("intrinsic function '%.*js' redefined"), name->len, name->ptr); goto exit_func; case FNTYPE_FUN: - hawk_seterrfmt (hawk, xloc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), name->len, name->ptr); goto exit_func; } @@ -5988,11 +6240,11 @@ more_idx: } /* undefined variable */ - hawk_seterrfmt (hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EUNDEF, FMT_EUNDEF, name->len, name->ptr); exit_func: - hawk_clrpt (hawk, idx); - hawk_freemem (hawk, nde); + hawk_clrpt(hawk, idx); + hawk_freemem(hawk, nde); return HAWK_NULL; } @@ -6039,7 +6291,7 @@ static hawk_nde_t* parse_fncall (hawk_t* hawk, const hawk_oocs_t* name, hawk_fnc if (!MATCH(hawk,TOK_COMMA)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ECOMMA, FMT_ECOMMA, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ECOMMA, FMT_ECOMMA, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); goto oops; } @@ -6056,7 +6308,7 @@ make_node: call = (hawk_nde_fncall_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*call)); if (HAWK_UNLIKELY(!call)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } @@ -6083,12 +6335,12 @@ make_node: if (nargs > call->u.fnc.spec.arg.max) { - hawk_seterrnum (hawk, xloc, HAWK_EARGTM); + hawk_seterrnum(hawk, xloc, HAWK_EARGTM); goto oops; } else if (nargs < call->u.fnc.spec.arg.min) { - hawk_seterrnum (hawk, xloc, HAWK_EARGTF); + hawk_seterrnum(hawk, xloc, HAWK_EARGTF); goto oops; } } @@ -6104,7 +6356,7 @@ make_node: /* store a non-builtin function call into the hawk->parse.funs table */ if (!hawk_htb_upsert(hawk->parse.funs, name->ptr, name->len, call, 0)) { - ADJERR_LOC (hawk, xloc); + ADJERR_LOC(hawk, xloc); goto oops; } } @@ -6112,8 +6364,8 @@ make_node: return (hawk_nde_t*)call; oops: - if (call) hawk_freemem (hawk, call); - if (head) hawk_clrpt (hawk, head); + if (call) hawk_freemem(hawk, call); + if (head) hawk_clrpt(hawk, head); return HAWK_NULL; } @@ -6122,22 +6374,22 @@ static int get_number (hawk_t* hawk, hawk_tok_t* tok) hawk_ooci_t c; HAWK_ASSERT (HAWK_OOECS_LEN(tok->name) == 0); - SET_TOKEN_TYPE (hawk, tok, TOK_INT); + SET_TOKEN_TYPE(hawk, tok, TOK_INT); c = hawk->sio.last.c; if (c == '0') { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); if (c == 'x' || c == 'X') { /* hexadecimal number */ do { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } while (hawk_is_ooch_xdigit(c)); @@ -6148,8 +6400,8 @@ static int get_number (hawk_t* hawk, hawk_tok_t* tok) /* binary number */ do { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } while (c == '0' || c == '1'); @@ -6160,13 +6412,13 @@ static int get_number (hawk_t* hawk, hawk_tok_t* tok) /* octal number */ while (c >= '0' && c <= '7') { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } if (c == '8' || c == '9') { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_ELXCHR, HAWK_T("invalid digit '%jc'"), (hawk_ooch_t)c); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_ELXCHR, HAWK_T("invalid digit '%jc'"), (hawk_ooch_t)c); return -1; } @@ -6176,42 +6428,42 @@ static int get_number (hawk_t* hawk, hawk_tok_t* tok) while (hawk_is_ooch_digit(c)) { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } if (c == '.') { /* floating-point number */ - SET_TOKEN_TYPE (hawk, tok, TOK_FLT); + SET_TOKEN_TYPE(hawk, tok, TOK_FLT); - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); while (hawk_is_ooch_digit(c)) { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } } if (c == 'E' || c == 'e') { - SET_TOKEN_TYPE (hawk, tok, TOK_FLT); + SET_TOKEN_TYPE(hawk, tok, TOK_FLT); - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); if (c == '+' || c == '-') { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } while (hawk_is_ooch_digit(c)) { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } } @@ -6236,11 +6488,11 @@ static int get_string ( while (1) { - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == HAWK_OOCI_EOF) { - hawk_seterrnum (hawk, &hawk->tok.loc, HAWK_ESTRNC); + hawk_seterrnum(hawk, &hawk->tok.loc, HAWK_ESTRNC); return -1; } @@ -6249,7 +6501,7 @@ static int get_string ( #else if (byte_only && c != '\\' && !HAWK_BYTE_PRINTABLE(c)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EMBSCHR, HAWK_T("invalid mbs character '%jc'"), (hawk_ooch_t)c); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EMBSCHR, HAWK_T("invalid mbs character '%jc'"), (hawk_ooch_t)c); return -1; } #endif @@ -6264,14 +6516,14 @@ static int get_string ( { /* should i limit the max to 0xFF/0377? if (c_acc > 0377) c_acc = 0377; */ - ADD_TOKEN_UINT32 (hawk, tok, c_acc); + ADD_TOKEN_UINT32(hawk, tok, c_acc); escaped = 0; } continue; } else { - ADD_TOKEN_UINT32 (hawk, tok, c_acc); + ADD_TOKEN_UINT32(hawk, tok, c_acc); escaped = 0; } } @@ -6283,7 +6535,7 @@ static int get_string ( digit_count++; if (digit_count >= escaped) { - ADD_TOKEN_UINT32 (hawk, tok, c_acc); + ADD_TOKEN_UINT32(hawk, tok, c_acc); escaped = 0; } continue; @@ -6294,7 +6546,7 @@ static int get_string ( digit_count++; if (digit_count >= escaped) { - ADD_TOKEN_UINT32 (hawk, tok, c_acc); + ADD_TOKEN_UINT32(hawk, tok, c_acc); escaped = 0; } continue; @@ -6305,7 +6557,7 @@ static int get_string ( digit_count++; if (digit_count >= escaped) { - ADD_TOKEN_UINT32 (hawk, tok, c_acc); + ADD_TOKEN_UINT32(hawk, tok, c_acc); escaped = 0; } continue; @@ -6326,9 +6578,9 @@ static int get_string ( * 'c' is at the first G. this part is to restore the * \x part. since \x is not followed by any hexadecimal * digits, it's literally 'x' */ - ADD_TOKEN_CHAR (hawk, tok, ec); + ADD_TOKEN_CHAR(hawk, tok, ec); } - else ADD_TOKEN_UINT32 (hawk, tok, c_acc); + else ADD_TOKEN_UINT32(hawk, tok, c_acc); escaped = 0; /* carray on to handle the current character */ @@ -6347,7 +6599,7 @@ static int get_string ( if (c == end_char) { /* terminating quote */ - /*GET_CHAR_TO (hawk, c);*/ + /*GET_CHAR_TO(hawk, c);*/ GET_CHAR (hawk); break; } @@ -6358,7 +6610,7 @@ static int get_string ( } else if (!(hawk->parse.pragma.trait & HAWK_MULTILINESTR) && (c == '\n' || c == '\r')) { - hawk_seterrnum (hawk, &hawk->tok.loc, HAWK_ESTRNC); + hawk_seterrnum(hawk, &hawk->tok.loc, HAWK_ESTRNC); return -1; } } @@ -6424,13 +6676,13 @@ static int get_string ( * an unhandled escape sequence can be handled * outside this function since the escape character * is preserved.*/ - ADD_TOKEN_CHAR (hawk, tok, esc_char); + ADD_TOKEN_CHAR(hawk, tok, esc_char); } escaped = 0; } - ADD_TOKEN_CHAR (hawk, tok, c); + ADD_TOKEN_CHAR(hawk, tok, c); } return 0; @@ -6466,7 +6718,7 @@ static int get_rexstr (hawk_t* hawk, hawk_tok_t* tok) { /* add other initial characters here as get_string() * begins with reading the next character */ - ADD_TOKEN_CHAR (hawk, tok, hawk->sio.last.c); + ADD_TOKEN_CHAR(hawk, tok, hawk->sio.last.c); } return get_string(hawk, HAWK_T('/'), HAWK_T('\\'), 1, 0, preescaped, tok); } @@ -6479,11 +6731,11 @@ static int get_raw_string (hawk_t* hawk, hawk_ooch_t end_char, int byte_only, ha while (1) { - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == HAWK_OOCI_EOF) { - hawk_seterrnum (hawk, &hawk->tok.loc, HAWK_ESTRNC); + hawk_seterrnum(hawk, &hawk->tok.loc, HAWK_ESTRNC); return -1; } @@ -6492,7 +6744,7 @@ static int get_raw_string (hawk_t* hawk, hawk_ooch_t end_char, int byte_only, ha #else if (byte_only && c != '\\' && !HAWK_BYTE_PRINTABLE(c)) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EMBSCHR, HAWK_T("invalid mbs character '%jc'"), (hawk_ooch_t)c); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EMBSCHR, HAWK_T("invalid mbs character '%jc'"), (hawk_ooch_t)c); return -1; } #endif @@ -6504,7 +6756,7 @@ static int get_raw_string (hawk_t* hawk, hawk_ooch_t end_char, int byte_only, ha break; } - ADD_TOKEN_CHAR (hawk, tok, c); + ADD_TOKEN_CHAR(hawk, tok, c); } return 0; @@ -6519,7 +6771,7 @@ static int skip_spaces (hawk_t* hawk) do { while (c != HAWK_T('\n') && hawk_is_ooch_space(c)) - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == HAWK_T('\\')) { @@ -6528,25 +6780,25 @@ static int skip_spaces (hawk_t* hawk) int hascr = 0; bs = hawk->sio.last; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == HAWK_T('\r')) { hascr = 1; cr = hawk->sio.last; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); } if (c == HAWK_T('\n')) { - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); continue; } else { /* push back the last character */ - unget_char (hawk, &hawk->sio.last); + unget_char(hawk, &hawk->sio.last); /* push CR if any */ - if (hascr) unget_char (hawk, &cr); + if (hascr) unget_char(hawk, &cr); /* restore the orginal backslash */ hawk->sio.last = bs; } @@ -6558,7 +6810,7 @@ static int skip_spaces (hawk_t* hawk) } else { - while (hawk_is_ooch_space(c)) GET_CHAR_TO (hawk, c); + while (hawk_is_ooch_space(c)) GET_CHAR_TO(hawk, c); } return 0; @@ -6572,7 +6824,7 @@ static int skip_comment (hawk_t* hawk) if (c == HAWK_T('#')) { /* skip up to \n */ - do { GET_CHAR_TO (hawk, c); } + do { GET_CHAR_TO(hawk, c); } while (c != HAWK_T('\n') && c != HAWK_OOCI_EOF); if (!(hawk->opt.trait & HAWK_NEWLINE)) GET_CHAR (hawk); @@ -6585,39 +6837,39 @@ static int skip_comment (hawk_t* hawk) /* save the last character */ lc = hawk->sio.last; /* read a new character */ - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == HAWK_T('*')) { do { - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == HAWK_OOCI_EOF) { hawk_loc_t loc; loc.line = hawk->sio.inp->line; loc.colm = hawk->sio.inp->colm; loc.file = hawk->sio.inp->path; - hawk_seterrnum (hawk, &loc, HAWK_ECMTNC); + hawk_seterrnum(hawk, &loc, HAWK_ECMTNC); return -1; } if (c == HAWK_T('*')) { - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == HAWK_OOCI_EOF) { hawk_loc_t loc; loc.line = hawk->sio.inp->line; loc.colm = hawk->sio.inp->colm; loc.file = hawk->sio.inp->path; - hawk_seterrnum (hawk, &loc, HAWK_ECMTNC); + hawk_seterrnum(hawk, &loc, HAWK_ECMTNC); return -1; } if (c == HAWK_T('/')) { - /*GET_CHAR_TO (hawk, c);*/ + /*GET_CHAR_TO(hawk, c);*/ GET_CHAR (hawk); break; } @@ -6629,7 +6881,7 @@ static int skip_comment (hawk_t* hawk) } /* unget '*' */ - unget_char (hawk, &hawk->sio.last); + unget_char(hawk, &hawk->sio.last); /* restore the previous state */ hawk->sio.last = lc; @@ -6723,15 +6975,15 @@ static int get_symbols (hawk_t* hawk, hawk_ooci_t c, hawk_tok_t* tok) { if (p->str[idx] == HAWK_T('\0')) { - ADD_TOKEN_STR (hawk, tok, p->str, p->len); - SET_TOKEN_TYPE (hawk, tok, p->tid); + ADD_TOKEN_STR(hawk, tok, p->str, p->len); + SET_TOKEN_TYPE(hawk, tok, p->tid); return 1; } if (c == p->str[idx]) { idx++; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); continue; } } @@ -6776,14 +7028,14 @@ retry: goto retry; } - ADD_TOKEN_STR (hawk, tok, HAWK_T(""), 5); - SET_TOKEN_TYPE (hawk, tok, TOK_EOF); + ADD_TOKEN_STR(hawk, tok, HAWK_T(""), 5); + SET_TOKEN_TYPE(hawk, tok, TOK_EOF); } else if (c == HAWK_T('\n')) { - /*ADD_TOKEN_CHAR (hawk, tok, HAWK_T('\n'));*/ - ADD_TOKEN_STR (hawk, tok, HAWK_T(""), 4); - SET_TOKEN_TYPE (hawk, tok, TOK_NEWLINE); + /*ADD_TOKEN_CHAR(hawk, tok, HAWK_T('\n'));*/ + ADD_TOKEN_STR(hawk, tok, HAWK_T(""), 4); + SET_TOKEN_TYPE(hawk, tok, TOK_NEWLINE); GET_CHAR (hawk); } else if (hawk_is_ooch_digit(c)/*|| c == HAWK_T('.')*/) @@ -6795,9 +7047,9 @@ retry: hawk_sio_lxc_t lc; lc = hawk->sio.last; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); - unget_char (hawk, &hawk->sio.last); + unget_char(hawk, &hawk->sio.last); hawk->sio.last = lc; if (hawk_is_ooch_digit(c)) @@ -6815,34 +7067,34 @@ retry: { int type; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c != HAWK_T('_') && !hawk_is_ooch_alpha(c)) { /* this extended keyword is empty, * not followed by a valid word */ - hawk_seterrnum (hawk, &(hawk)->tok.loc, HAWK_EXKWEM); + hawk_seterrnum(hawk, &(hawk)->tok.loc, HAWK_EXKWEM); return -1; } if (c == 'B' || c == 'b') { hawk_sio_lxc_t pc1 = hawk->sio.last; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == 'R' || c == 'r') { hawk_sio_lxc_t pc2 = hawk->sio.last; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == '\"') { /* raw byte string */ - SET_TOKEN_TYPE (hawk, tok, TOK_MBS); + SET_TOKEN_TYPE(hawk, tok, TOK_MBS); if (get_raw_string(hawk, c, 1, tok) <= -1) return -1; } else { - unget_char (hawk, &hawk->sio.last); - unget_char (hawk, &pc2); + unget_char(hawk, &hawk->sio.last); + unget_char(hawk, &pc2); hawk->sio.last = pc1; c = pc1.c; goto process_at_identifier; @@ -6851,23 +7103,23 @@ retry: else if (c == '\"') { /* @B"XXX", @b"XXX" - byte string */ - SET_TOKEN_TYPE (hawk, tok, TOK_MBS); + SET_TOKEN_TYPE(hawk, tok, TOK_MBS); if (get_string(hawk, c, HAWK_T('\\'), 0, 1, 0, tok) <= -1) return -1; } else if (c == '\'') { /* @B'X' @b'x' - byte character */ - SET_TOKEN_TYPE (hawk, tok, TOK_BCHR); + SET_TOKEN_TYPE(hawk, tok, TOK_BCHR); if (get_string(hawk, c, '\\', 0, 1, 0, tok) <= -1) return -1; if (HAWK_OOECS_LEN(tok->name) != 1) { - hawk_seterrfmt (hawk, &tok->loc, HAWK_ELXCHR, HAWK_T("invalid byte-character token")); + hawk_seterrfmt(hawk, &tok->loc, HAWK_ELXCHR, HAWK_T("invalid byte-character token")); return -1; } } else { - unget_char (hawk, &hawk->sio.last); + unget_char(hawk, &hawk->sio.last); hawk->sio.last = pc1; c = pc1.c; goto process_at_identifier; @@ -6876,21 +7128,21 @@ retry: else if (c == 'R' || c == 'r') { hawk_sio_lxc_t pc1 = hawk->sio.last; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == 'B' || c == 'b') { hawk_sio_lxc_t pc2 = hawk->sio.last; - GET_CHAR_TO (hawk, c); + GET_CHAR_TO(hawk, c); if (c == '\"') { /* raw byte string */ - SET_TOKEN_TYPE (hawk, tok, TOK_MBS); + SET_TOKEN_TYPE(hawk, tok, TOK_MBS); if (get_raw_string(hawk, c, 1, tok) <= -1) return -1; } else { - unget_char (hawk, &hawk->sio.last); - unget_char (hawk, &pc2); + unget_char(hawk, &hawk->sio.last); + unget_char(hawk, &pc2); hawk->sio.last = pc1; c = pc1.c; goto process_at_identifier; @@ -6899,7 +7151,7 @@ retry: else if (c == '\"') { /* R, r - raw string */ - SET_TOKEN_TYPE (hawk, tok, TOK_STR); + SET_TOKEN_TYPE(hawk, tok, TOK_STR); if (get_raw_string(hawk, c, 0, tok) <= -1) return -1; } #if 0 @@ -6911,7 +7163,7 @@ retry: #endif else { - unget_char (hawk, &hawk->sio.last); + unget_char(hawk, &hawk->sio.last); hawk->sio.last = pc1; c = pc1.c; goto process_at_identifier; @@ -6920,13 +7172,13 @@ retry: else { process_at_identifier: - ADD_TOKEN_CHAR (hawk, tok, HAWK_T('@')); + ADD_TOKEN_CHAR(hawk, tok, HAWK_T('@')); /* expect normal identifier starting with an alphabet */ do { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } while (c == HAWK_T('_') || hawk_is_ooch_alpha(c) || hawk_is_ooch_digit(c)); @@ -6934,13 +7186,13 @@ retry: { /* special parser-level word @SCRIPTNAME. substitute an actual value for it */ if (HAWK_UNLIKELY(hawk_ooecs_cpy(tok->name, (tok->loc.file? (const hawk_ooch_t*)tok->loc.file: (const hawk_ooch_t*)HAWK_T(""))) == (hawk_oow_t)-1)) return -1; - SET_TOKEN_TYPE (hawk, tok, TOK_STR); + SET_TOKEN_TYPE(hawk, tok, TOK_STR); } else if (hawk_comp_oochars_bcstr(HAWK_OOECS_PTR(tok->name), HAWK_OOECS_LEN(tok->name), "@SCRIPTLINE", 0) == 0) { /* special parser-level word @SCRIPTLINE. subsitute an actual value for it */ if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), tok->loc.line) == (hawk_oow_t)-1)) return -1; - SET_TOKEN_TYPE (hawk, tok, TOK_INT); + SET_TOKEN_TYPE(hawk, tok, TOK_INT); } else if (hawk_comp_oochars_bcstr(HAWK_OOECS_PTR(tok->name), HAWK_OOECS_LEN(tok->name), "@UCH_ON", 0) == 0) { @@ -6950,7 +7202,7 @@ retry: #else if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), 0) == (hawk_oow_t)-1)) return -1; #endif - SET_TOKEN_TYPE (hawk, tok, TOK_INT); + SET_TOKEN_TYPE(hawk, tok, TOK_INT); } else if (hawk_comp_oochars_bcstr(HAWK_OOECS_PTR(tok->name), HAWK_OOECS_LEN(tok->name), "@BCH_ON", 0) == 0) { @@ -6960,17 +7212,17 @@ retry: #else if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), 1) == (hawk_oow_t)-1)) return -1; #endif - SET_TOKEN_TYPE (hawk, tok, TOK_INT); + SET_TOKEN_TYPE(hawk, tok, TOK_INT); } else { type = classify_ident(hawk, HAWK_OOECS_OOCS(tok->name)); if (type == TOK_IDENT) { - hawk_seterrfmt (hawk, &hawk->tok.loc, HAWK_EXKWNR, FMT_EXKWNR, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); + hawk_seterrfmt(hawk, &hawk->tok.loc, HAWK_EXKWNR, FMT_EXKWNR, HAWK_OOECS_LEN(hawk->tok.name), HAWK_OOECS_PTR(hawk->tok.name)); return -1; } - SET_TOKEN_TYPE (hawk, tok, type); + SET_TOKEN_TYPE(hawk, tok, type); } } } @@ -6981,27 +7233,27 @@ retry: /* identifier */ do { - ADD_TOKEN_CHAR (hawk, tok, c); - GET_CHAR_TO (hawk, c); + ADD_TOKEN_CHAR(hawk, tok, c); + GET_CHAR_TO(hawk, c); } while (c == '_' || hawk_is_ooch_alpha(c) || hawk_is_ooch_digit(c)); type = classify_ident(hawk, HAWK_OOECS_OOCS(tok->name)); - SET_TOKEN_TYPE (hawk, tok, type); + SET_TOKEN_TYPE(hawk, tok, type); } else if (c == '\"') { /* double-quoted string */ - SET_TOKEN_TYPE (hawk, tok, TOK_STR); + SET_TOKEN_TYPE(hawk, tok, TOK_STR); if (get_string(hawk, c, '\\', 0, 0, 0, tok) <= -1) return -1; } else if (c == '\'') { - SET_TOKEN_TYPE (hawk, tok, TOK_CHAR); + SET_TOKEN_TYPE(hawk, tok, TOK_CHAR); if (get_string(hawk, c, '\\', 0, 0, 0, tok) <= -1) return -1; if (HAWK_OOECS_LEN(tok->name) != 1) { - hawk_seterrfmt (hawk, &tok->loc, HAWK_ELXCHR, HAWK_T("invalid character token")); + hawk_seterrfmt(hawk, &tok->loc, HAWK_ELXCHR, HAWK_T("invalid character token")); return -1; } } @@ -7015,11 +7267,11 @@ retry: /* not handled yet */ if (c == HAWK_T('\0')) { - hawk_seterrfmt (hawk, &tok->loc, HAWK_ELXCHR, HAWK_T("invalid character '\\0'")); + hawk_seterrfmt(hawk, &tok->loc, HAWK_ELXCHR, HAWK_T("invalid character '\\0'")); } else { - hawk_seterrfmt (hawk, &tok->loc, HAWK_ELXCHR, HAWK_T("invalid character '%jc'"), (hawk_ooch_t)c); + hawk_seterrfmt(hawk, &tok->loc, HAWK_ELXCHR, HAWK_T("invalid character '%jc'"), (hawk_ooch_t)c); } return -1; } @@ -7036,7 +7288,7 @@ retry: if (skip_semicolon_after_include && !(hawk->opt.trait & HAWK_NEWLINE)) { /* semiclon has not been skipped yet and the newline option is not set. */ - hawk_seterrfmt (hawk, &tok->loc, HAWK_ESCOLON, FMT_ESCOLON, HAWK_OOECS_LEN(tok->name), HAWK_OOECS_PTR(tok->name)); + hawk_seterrfmt(hawk, &tok->loc, HAWK_ESCOLON, FMT_ESCOLON, HAWK_OOECS_LEN(tok->name), HAWK_OOECS_PTR(tok->name)); return -1; } @@ -7206,7 +7458,7 @@ static int deparse (hawk_t* hawk) len = hawk_int_to_oocstr((hawk_int_t)hawk->parse.pragma.rtx_stack_limit, 10, HAWK_NULL, tmp, HAWK_COUNTOF(tmp)); if (hawk_putsrcoocstr(hawk, HAWK_T("@pragma stack_limit ")) <= -1 || - hawk_putsrcoochars (hawk, tmp, len) <= -1 || + hawk_putsrcoochars(hawk, tmp, len) <= -1 || hawk_putsrcoocstr(hawk, HAWK_T(";\n")) <= -1) EXIT_DEPARSE (); } @@ -7216,24 +7468,24 @@ static int deparse (hawk_t* hawk) HAWK_ASSERT (hawk->tree.ngbls > 0); - hawk_getkwname (hawk, HAWK_KWID_XGLOBAL, &kw); - if (hawk_putsrcoochars(hawk, kw.ptr, kw.len) <= -1 || hawk_putsrcoocstr (hawk, HAWK_T(" ")) <= -1) EXIT_DEPARSE (); + hawk_getkwname(hawk, HAWK_KWID_XGLOBAL, &kw); + if (hawk_putsrcoochars(hawk, kw.ptr, kw.len) <= -1 || hawk_putsrcoocstr(hawk, HAWK_T(" ")) <= -1) EXIT_DEPARSE (); for (i = hawk->tree.ngbls_base; i < hawk->tree.ngbls - 1; i++) { if (!(hawk->opt.trait & HAWK_IMPLICIT)) { /* use the actual name if no named variable is allowed */ - if (hawk_putsrcoochars (hawk, HAWK_ARR_DPTR(hawk->parse.gbls, i), HAWK_ARR_DLEN(hawk->parse.gbls, i)) <= -1) EXIT_DEPARSE (); + if (hawk_putsrcoochars(hawk, HAWK_ARR_DPTR(hawk->parse.gbls, i), HAWK_ARR_DLEN(hawk->parse.gbls, i)) <= -1) EXIT_DEPARSE (); } else { len = hawk_int_to_oocstr((hawk_int_t)i, 10, HAWK_T("__g"), tmp, HAWK_COUNTOF(tmp)); HAWK_ASSERT (len != (hawk_oow_t)-1); - if (hawk_putsrcoochars (hawk, tmp, len) <= -1) EXIT_DEPARSE (); + if (hawk_putsrcoochars(hawk, tmp, len) <= -1) EXIT_DEPARSE (); } - if (hawk_putsrcoocstr (hawk, HAWK_T(", ")) <= -1) EXIT_DEPARSE (); + if (hawk_putsrcoocstr(hawk, HAWK_T(", ")) <= -1) EXIT_DEPARSE (); } if (!(hawk->opt.trait & HAWK_IMPLICIT)) @@ -7245,7 +7497,7 @@ static int deparse (hawk_t* hawk) { len = hawk_int_to_oocstr((hawk_int_t)i, 10, HAWK_T("__g"), tmp, HAWK_COUNTOF(tmp)); HAWK_ASSERT (len != (hawk_oow_t)-1); - if (hawk_putsrcoochars (hawk, tmp, len) <= -1) EXIT_DEPARSE (); + if (hawk_putsrcoochars(hawk, tmp, len) <= -1) EXIT_DEPARSE (); } if (hawk->opt.trait & HAWK_CRLF) @@ -7270,7 +7522,7 @@ static int deparse (hawk_t* hawk) { hawk_oocs_t kw; - hawk_getkwname (hawk, HAWK_KWID_BEGIN, &kw); + hawk_getkwname(hawk, HAWK_KWID_BEGIN, &kw); if (hawk_putsrcoochars(hawk, kw.ptr, kw.len) <= -1) EXIT_DEPARSE (); if (hawk_putsrcoocstr(hawk, HAWK_T(" ")) <= -1) EXIT_DEPARSE (); @@ -7326,7 +7578,7 @@ static int deparse (hawk_t* hawk) { hawk_oocs_t kw; - hawk_getkwname (hawk, HAWK_KWID_END, &kw); + hawk_getkwname(hawk, HAWK_KWID_END, &kw); if (hawk_putsrcoochars(hawk, kw.ptr, kw.len) <= -1) EXIT_DEPARSE (); if (hawk_putsrcoocstr(hawk, HAWK_T(" ")) <= -1) EXIT_DEPARSE (); @@ -7336,10 +7588,10 @@ static int deparse (hawk_t* hawk) /* if (hawk->opt.trait & HAWK_CRLF) { - if (put_char (hawk, HAWK_T('\r')) <= -1) EXIT_DEPARSE (); + if (put_char(hawk, HAWK_T('\r')) <= -1) EXIT_DEPARSE (); } - if (put_char (hawk, HAWK_T('\n')) <= -1) EXIT_DEPARSE (); + if (put_char(hawk, HAWK_T('\n')) <= -1) EXIT_DEPARSE (); */ } @@ -7370,45 +7622,45 @@ static hawk_htb_walk_t deparse_func (hawk_htb_t* map, hawk_htb_pair_t* pair, voi } #define PUT_SX(x,str,len) \ - if (hawk_putsrcoochars (x->hawk, str, len) <= -1) { \ + if (hawk_putsrcoochars(x->hawk, str, len) <= -1) { \ x->ret = -1; return HAWK_HTB_WALK_STOP; \ } hawk_getkwname (df->hawk, HAWK_KWID_FUNCTION, &kw); - PUT_SX (df, kw.ptr, kw.len); + PUT_SX(df, kw.ptr, kw.len); - PUT_C (df, HAWK_T(' ')); - PUT_SX (df, fun->name.ptr, fun->name.len); - PUT_S (df, HAWK_T(" (")); + PUT_C(df, HAWK_T(' ')); + PUT_SX(df, fun->name.ptr, fun->name.len); + PUT_S(df, HAWK_T(" (")); for (i = 0; i < fun->nargs; ) { - if (fun->argspec && i < fun->argspeclen && fun->argspec[i] == 'r') PUT_S (df, HAWK_T("&")); + if (fun->argspec && i < fun->argspeclen && fun->argspec[i] == 'r') PUT_S(df, HAWK_T("&")); n = hawk_int_to_oocstr(i++, 10, HAWK_T("__p"), df->tmp, df->tmp_len); HAWK_ASSERT (n != (hawk_oow_t)-1); PUT_SX (df, df->tmp, n); if (i >= fun->nargs) break; - PUT_S (df, HAWK_T(", ")); + PUT_S(df, HAWK_T(", ")); } if (fun->variadic) { - if (fun->nargs > 0) PUT_S (df, HAWK_T(", ")); + if (fun->nargs > 0) PUT_S(df, HAWK_T(", ")); PUT_S(df, HAWK_T("...")); } - PUT_S (df, HAWK_T(")")); - if (df->hawk->opt.trait & HAWK_CRLF) PUT_C (df, HAWK_T('\r')); + PUT_S(df, HAWK_T(")")); + if (df->hawk->opt.trait & HAWK_CRLF) PUT_C(df, HAWK_T('\r')); - PUT_C (df, HAWK_T('\n')); + PUT_C(df, HAWK_T('\n')); if (hawk_prnpt(df->hawk, fun->body) <= -1) return -1; if (df->hawk->opt.trait & HAWK_CRLF) { - PUT_C (df, HAWK_T('\r')); + PUT_C(df, HAWK_T('\r')); } - PUT_C (df, HAWK_T('\n')); + PUT_C(df, HAWK_T('\n')); return HAWK_HTB_WALK_FORWARD; @@ -7422,7 +7674,7 @@ static int put_char (hawk_t* hawk, hawk_ooch_t c) hawk->sio.arg.b.buf[hawk->sio.arg.b.len++] = c; if (hawk->sio.arg.b.len >= HAWK_COUNTOF(hawk->sio.arg.b.buf)) { - if (flush_out (hawk) <= -1) return -1; + if (flush_out(hawk) <= -1) return -1; } return 0; } @@ -7433,7 +7685,7 @@ static int flush_out (hawk_t* hawk) while (hawk->sio.arg.b.pos < hawk->sio.arg.b.len) { - n = hawk->sio.outf ( + n = hawk->sio.outf( hawk, HAWK_SIO_CMD_WRITE, &hawk->sio.arg, &hawk->sio.arg.b.buf[hawk->sio.arg.b.pos], hawk->sio.arg.b.len - hawk->sio.arg.b.pos @@ -7566,7 +7818,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse if (segs[0].len > HAWK_COUNTOF(buf) - 15) { /* module name too long */ - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ESEGTL, FMT_ESEGTL, segs[0].len, segs[0].ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ESEGTL, FMT_ESEGTL, segs[0].len, segs[0].ptr); return HAWK_NULL; } @@ -7585,7 +7837,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse /*if (n >= HAWK_COUNTOF(static_modtab)) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%.*js' not found"), segs[0].len, segs[0].ptr); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%.*js' not found"), segs[0].len, segs[0].ptr); return HAWK_NULL; }*/ @@ -7604,7 +7856,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse mdp = (hawk_mod_data_t*)HAWK_RBT_VPTR(pair); if (load(&mdp->mod, hawk) <= -1) { - hawk_rbt_delete (hawk->modtab, segs[0].ptr, segs[0].len); + hawk_rbt_delete(hawk->modtab, segs[0].ptr, segs[0].len); return HAWK_NULL; } @@ -7619,7 +7871,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse if (!hawk->prm.modopen || !hawk->prm.modgetsym || !hawk->prm.modclose) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EINVAL, HAWK_T("module callbacks not set properly")); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EINVAL, HAWK_T("module callbacks not set properly")); goto open_fail; } @@ -7650,7 +7902,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse const hawk_ooch_t* bem; open_fail: bem = hawk_backuperrmsg(hawk); - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js%js%js' for module '%js' not found - %js"), + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js%js%js' for module '%js' not found - %js"), (spec.prefix? (const hawk_ooch_t*)spec.prefix: (const hawk_ooch_t*)HAWK_T("")), spec.name, (spec.postfix? (const hawk_ooch_t*)spec.postfix: (const hawk_ooch_t*)HAWK_T("")), @@ -7667,7 +7919,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse load = hawk->prm.modgetsym(hawk, md.handle, &buf[0]); if (!load) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_ENOERR); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_ENOERR); /* attempt hawk_mod_xxx_ */ buf[10 + buflen] = HAWK_T('_'); @@ -7676,9 +7928,9 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse if (!load) { const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("module symbol '%.*js' not found - %js"), (10 + buflen), &buf[1], bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("module symbol '%.*js' not found - %js"), (10 + buflen), &buf[1], bem); - hawk->prm.modclose (hawk, md.handle); + hawk->prm.modclose(hawk, md.handle); return HAWK_NULL; } } @@ -7689,26 +7941,26 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse pair = hawk_rbt_insert(hawk->modtab, segs[0].ptr, segs[0].len, &md, HAWK_SIZEOF(md)); if (pair == HAWK_NULL) { - hawk->prm.modclose (hawk, md.handle); + hawk->prm.modclose(hawk, md.handle); return HAWK_NULL; } mdp = (hawk_mod_data_t*)HAWK_RBT_VPTR(pair); if (load(&mdp->mod, hawk) <= -1) { - hawk_rbt_delete (hawk->modtab, segs[0].ptr, segs[0].len); - hawk->prm.modclose (hawk, mdp->handle); + hawk_rbt_delete(hawk->modtab, segs[0].ptr, segs[0].len); + hawk->prm.modclose(hawk, mdp->handle); return HAWK_NULL; } } done: - hawk_seterrnum (hawk, HAWK_NULL, HAWK_ENOERR); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_ENOERR); n = mdp->mod.query(&mdp->mod, hawk, segs[1].ptr, sym); if (n <= -1) { const hawk_ooch_t* olderrmsg = hawk_backuperrmsg(hawk); - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("unable to find '%.*js' in module '%.*js' - %js"), segs[1].len, segs[1].ptr, segs[0].len, segs[0].ptr, olderrmsg); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("unable to find '%.*js' in module '%.*js' - %js"), segs[1].len, segs[1].ptr, segs[0].len, segs[0].ptr, olderrmsg); return HAWK_NULL; } return &mdp->mod; @@ -7727,7 +7979,7 @@ hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_ dc = hawk_find_oochars_in_oochars(name, name_len, HAWK_T("::"), 2, 0); if (!dc) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EINVAL, HAWK_T("invalid module name - %js"), name); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EINVAL, HAWK_T("invalid module name - %js"), name); return HAWK_NULL; } diff --git a/lib/run.c b/lib/run.c index eb4fb2b2..607258c4 100644 --- a/lib/run.c +++ b/lib/run.c @@ -78,7 +78,7 @@ static int init_rtx (hawk_rtx_t* rtx, hawk_t* hawk, hawk_rio_cbs_t* rio); static void fini_rtx (hawk_rtx_t* rtx, int fini_globals); static int init_globals (hawk_rtx_t* rtx); -static void refdown_globals (hawk_rtx_t* run, int pop); +static void refdown_globals (hawk_rtx_t* rtx, int pop); static int run_pblocks (hawk_rtx_t* rtx); static int run_pblock_chain (hawk_rtx_t* rtx, hawk_chain_t* cha); @@ -86,6 +86,7 @@ static int run_pblock (hawk_rtx_t* rtx, hawk_chain_t* cha, hawk_oow_t bno); static int run_block (hawk_rtx_t* rtx, hawk_nde_blk_t* nde); static int run_statement (hawk_rtx_t* rtx, hawk_nde_t* nde); static int run_if (hawk_rtx_t* rtx, hawk_nde_if_t* nde); +static int run_switch (hawk_rtx_t* rtx, hawk_nde_switch_t* nde); static int run_while (hawk_rtx_t* rtx, hawk_nde_while_t* nde); static int run_for (hawk_rtx_t* rtx, hawk_nde_for_t* nde); static int run_forin (hawk_rtx_t* rtx, hawk_nde_forin_t* nde); @@ -339,7 +340,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t { /* '\0' is included in the value */ hawk_rtx_freemem(rtx, str.ptr); - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_ECONVFMTCHR); return -1; } } @@ -441,7 +442,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t if (hawk_rtx_truncrec(rtx, (hawk_oow_t)lv) <= -1) { /* adjust the error line */ - /*if (var) ADJERR_LOC (rtx, &var->loc);*/ + /*if (var) ADJERR_LOC(rtx, &var->loc);*/ return -1; } } @@ -504,7 +505,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t { /* '\0' is included in the value */ hawk_rtx_freemem(rtx, str.ptr); - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_ECONVFMTCHR); return -1; } } @@ -846,7 +847,7 @@ hawk_rtx_t* hawk_rtx_open (hawk_t* hawk, hawk_oow_t xtnsize, hawk_rio_cbs_t* rio hawk_oow_t i; /* clear the hawk error code */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_ENOERR); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_ENOERR); /* check if the code has ever been parsed */ if (hawk->tree.ngbls == 0 && @@ -855,7 +856,7 @@ hawk_rtx_t* hawk_rtx_open (hawk_t* hawk, hawk_oow_t xtnsize, hawk_rio_cbs_t* rio hawk->tree.chain_size == 0 && hawk_htb_getsize(hawk->tree.funs) == 0) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EPERM); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EPERM); return HAWK_NULL; } @@ -876,7 +877,7 @@ hawk_rtx_t* hawk_rtx_open (hawk_t* hawk, hawk_oow_t xtnsize, hawk_rio_cbs_t* rio * it should be ok to copy over rtx error to hawk even if * rtx initialization fails. */ hawk_rtx_errortohawk (rtx, hawk); - hawk_freemem (hawk, rtx); + hawk_freemem(hawk, rtx); return HAWK_NULL; } @@ -886,7 +887,7 @@ hawk_rtx_t* hawk_rtx_open (hawk_t* hawk, hawk_oow_t xtnsize, hawk_rio_cbs_t* rio { hawk_rtx_errortohawk (rtx, hawk); fini_rtx (rtx, 0); - hawk_freemem (hawk, rtx); + hawk_freemem(hawk, rtx); return HAWK_NULL; } @@ -904,7 +905,7 @@ hawk_rtx_t* hawk_rtx_open (hawk_t* hawk, hawk_oow_t xtnsize, hawk_rio_cbs_t* rio } fini_rtx (rtx, 1); - hawk_freemem (hawk, rtx); + hawk_freemem(hawk, rtx); return HAWK_NULL; } @@ -1382,7 +1383,7 @@ static int prepare_globals (hawk_rtx_t* rtx) if (HAWK_UNLIKELY(HAWK_RTX_STACK_AVAIL(rtx) < ngbls)) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ESTACK); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_ESTACK); return -1; } @@ -1640,7 +1641,7 @@ hawk_val_t* hawk_rtx_loop (hawk_rtx_t* rtx) /* restore the stack top in a cheesy(?) way. * it is ok to do so as the values pushed are * nils and binary numbers. */ - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ESTACK); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_ESTACK); return HAWK_NULL; } @@ -1979,17 +1980,17 @@ static int run_pblocks (hawk_rtx_t* rtx) { int n; -#define ADJUST_ERROR(run) \ +#define ADJUST_ERROR(rtx) \ if (rtx->hawk->tree.chain != HAWK_NULL) \ { \ if (rtx->hawk->tree.chain->pattern != HAWK_NULL) \ - ADJERR_LOC (rtx, &rtx->hawk->tree.chain->pattern->loc); \ + ADJERR_LOC(rtx, &rtx->hawk->tree.chain->pattern->loc); \ else if (rtx->hawk->tree.chain->action != HAWK_NULL) \ - ADJERR_LOC (rtx, &rtx->hawk->tree.chain->action->loc); \ + ADJERR_LOC(rtx, &rtx->hawk->tree.chain->action->loc); \ } \ else if (rtx->hawk->tree.end != HAWK_NULL) \ { \ - ADJERR_LOC (run, &rtx->hawk->tree.end->loc); \ + ADJERR_LOC(rtx, &rtx->hawk->tree.end->loc); \ } rtx->inrec.buf_pos = 0; @@ -2129,7 +2130,7 @@ static HAWK_INLINE int run_block0 (hawk_rtx_t* rtx, hawk_nde_blk_t* nde) if (n <= -1) { hawk_rtx_refdownval(rtx, rtx->inrec.d0); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return -1; } @@ -2137,7 +2138,7 @@ static HAWK_INLINE int run_block0 (hawk_rtx_t* rtx, hawk_nde_blk_t* nde) if (n <= -1) { hawk_rtx_refdownval(rtx, rtx->inrec.d0); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return -1; } @@ -2159,7 +2160,7 @@ static HAWK_INLINE int run_block0 (hawk_rtx_t* rtx, hawk_nde_blk_t* nde) /* ensure sufficient space for local variables */ if (HAWK_UNLIKELY(HAWK_RTX_STACK_AVAIL(rtx) < tmp)) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_ESTACK); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_ESTACK); return -1; } @@ -2237,7 +2238,7 @@ static int run_block (hawk_rtx_t* rtx, hawk_nde_blk_t* nde) if (rtx->hawk->opt.depth.s.block_run > 0 && rtx->depth.block >= rtx->hawk->opt.depth.s.block_run) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EBLKNST); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EBLKNST); return -1;; } @@ -2279,6 +2280,17 @@ static int run_statement (hawk_rtx_t* rtx, hawk_nde_t* nde) xret = run_if(rtx, (hawk_nde_if_t*)nde); break; + case HAWK_NDE_SWITCH: + xret = run_switch(rtx, (hawk_nde_switch_t*)nde); + break; + + case HAWK_NDE_CASE: + /* this must never happen - run_swtich must handle this part */ + HAWK_ASSERT (!"should never happen - HAWK_NDE_CASE must not be fed to run_statement"); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EINTERN); + xret = -1; + break; + case HAWK_NDE_WHILE: case HAWK_NDE_DOWHILE: xret = run_while(rtx, (hawk_nde_while_t*)nde); @@ -2378,6 +2390,119 @@ static int run_if (hawk_rtx_t* rtx, hawk_nde_if_t* nde) return n; } +static int run_switch (hawk_rtx_t* rtx, hawk_nde_switch_t* nde) +{ + hawk_val_t* test; + hawk_val_t* v; + hawk_nde_case_t* case_part; + hawk_nde_case_t* default_part; + int eval_true = 0; + int ret = 0; + + /* the test expression for the if statement cannot have + * chained expressions. this should not be allowed by the + * parser first of all */ + HAWK_ASSERT (nde->test->next == HAWK_NULL); + + test = eval_expression(rtx, nde->test); + if (HAWK_UNLIKELY(!test)) return -1; + + hawk_rtx_refupval(rtx, test); + + HAWK_ASSERT(nde->type == HAWK_NDE_CASE); + case_part = (hawk_nde_case_t*)nde->case_part; + default_part = (hawk_nde_case_t*)nde->default_part; + + while (case_part) + { + int x; + + if (eval_true) goto skip_eval; + if (case_part->val) // skip the default part. + { + v = eval_expression(rtx, case_part->val); + hawk_rtx_refupval(rtx, v); + x = hawk_rtx_cmpval(rtx, test, v, &ret); + hawk_rtx_refdownval(rtx, v); + if (x <= -1) + { + hawk_rtx_refdownval(rtx, test); + return -1; + } + if (ret == 0) + { + skip_eval: + eval_true = 1; + if (case_part->action) + { + hawk_nde_t* action; + + action = case_part->action; + do + { + if (run_statement(rtx, action) <= -1) + { + ret = -1; + goto done; + } + + if (rtx->exit_level == EXIT_BREAK) /* if 'break' has been executed */ + { + rtx->exit_level = EXIT_NONE; + goto done; + } + else if (rtx->exit_level != EXIT_NONE) goto done; + + action = action->next; + } + while(action); + + } + } + } + + case_part = (hawk_nde_case_t*)case_part->next; + } + + if (!eval_true && default_part) + { + case_part = default_part; + do + { + if (case_part->action) + { + hawk_nde_t* action; + + action = case_part->action; + do + { + if (run_statement(rtx, action) <= -1) + { + ret = -1; + goto done; + } + + if (rtx->exit_level == EXIT_BREAK) /* if 'break' has been executed */ + { + rtx->exit_level = EXIT_NONE; + goto done; + } + else if (rtx->exit_level != EXIT_NONE) goto done; + + action = action->next; + } + while (action); + } + case_part = (hawk_nde_case_t*)case_part->next; + } + while (case_part); + } + +done: + hawk_rtx_refdownval(rtx, test); + return ret; +} + static int run_while (hawk_rtx_t* rtx, hawk_nde_while_t* nde) { hawk_val_t* test; @@ -2500,7 +2625,7 @@ static int run_for (hawk_rtx_t* rtx, hawk_nde_for_t* nde) hawk_rtx_refupval(rtx, test); if (hawk_rtx_valtobool(rtx, test)) { - if (run_statement(rtx,nde->body) <= -1) + if (run_statement(rtx, nde->body) <= -1) { hawk_rtx_refdownval(rtx, test); return -1; @@ -2593,7 +2718,7 @@ static int run_forin (hawk_rtx_t* rtx, hawk_nde_forin_t* nde) tmp = hawk_rtx_reallocmem(rtx, rtx->forin.ptr, newcapa * HAWK_SIZEOF(*tmp)); if (HAWK_UNLIKELY(!tmp)) { - ADJERR_LOC (rtx, &test->left->loc); + ADJERR_LOC(rtx, &test->left->loc); ret = -1; goto done2; } @@ -2613,7 +2738,7 @@ static int run_forin (hawk_rtx_t* rtx, hawk_nde_forin_t* nde) str = (hawk_val_t*)hawk_rtx_makenstrvalwithoochars(rtx, HAWK_HTB_KPTR(pair), HAWK_HTB_KLEN(pair)); if (HAWK_UNLIKELY(!str)) { - ADJERR_LOC (rtx, &test->left->loc); + ADJERR_LOC(rtx, &test->left->loc); ret = -1; goto done2; } @@ -2675,7 +2800,7 @@ static int run_forin (hawk_rtx_t* rtx, hawk_nde_forin_t* nde) tmp = hawk_rtx_reallocmem(rtx, rtx->forin.ptr, newcapa * HAWK_SIZEOF(*tmp)); if (HAWK_UNLIKELY(!tmp)) { - ADJERR_LOC (rtx, &test->left->loc); + ADJERR_LOC(rtx, &test->left->loc); ret = -1; goto done3; } @@ -2696,7 +2821,7 @@ static int run_forin (hawk_rtx_t* rtx, hawk_nde_forin_t* nde) tmp = (hawk_val_t*)hawk_rtx_makeintval(rtx, i); if (HAWK_UNLIKELY(!tmp)) { - ADJERR_LOC (rtx, &test->left->loc); + ADJERR_LOC(rtx, &test->left->loc); ret = -1; goto done3; } @@ -2738,7 +2863,7 @@ static int run_forin (hawk_rtx_t* rtx, hawk_nde_forin_t* nde) } default: - hawk_rtx_seterrnum (rtx, &test->right->loc, HAWK_EINROP); + hawk_rtx_seterrnum(rtx, &test->right->loc, HAWK_EINROP); ret = -1; goto done1; } @@ -2749,9 +2874,9 @@ done1: return ret; } -static int run_break (hawk_rtx_t* run, hawk_nde_break_t* nde) +static int run_break (hawk_rtx_t* rtx, hawk_nde_break_t* nde) { - run->exit_level = EXIT_BREAK; + rtx->exit_level = EXIT_BREAK; return 0; } @@ -2783,7 +2908,7 @@ static int run_return (hawk_rtx_t* rtx, hawk_nde_return_t* nde) /* cannot return a map */ hawk_rtx_refupval(rtx, val); hawk_rtx_refdownval(rtx, val); - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_ENONSCARET); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_ENONSCARET); return -1; } } @@ -2829,12 +2954,12 @@ static int run_next (hawk_rtx_t* rtx, hawk_nde_next_t* nde) * check that explicitly */ if (rtx->active_block == (hawk_nde_blk_t*)rtx->hawk->tree.begin) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_ERNEXTBEG); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_ERNEXTBEG); return -1; } else if (rtx->active_block == (hawk_nde_blk_t*)rtx->hawk->tree.end) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_ERNEXTEND); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_ERNEXTEND); return -1; } @@ -2849,19 +2974,19 @@ static int run_nextinfile (hawk_rtx_t* rtx, hawk_nde_nextfile_t* nde) /* normal nextfile statement */ if (rtx->active_block == (hawk_nde_blk_t*)rtx->hawk->tree.begin) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_ERNEXTFBEG); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_ERNEXTFBEG); return -1; } else if (rtx->active_block == (hawk_nde_blk_t*)rtx->hawk->tree.end) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_ERNEXTFEND); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_ERNEXTFEND); return -1; } n = hawk_rtx_nextio_read(rtx, HAWK_IN_CONSOLE, HAWK_T("")); if (n <= -1) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return -1; } @@ -2875,7 +3000,7 @@ static int run_nextinfile (hawk_rtx_t* rtx, hawk_nde_nextfile_t* nde) /* FNR resets to 0, NR remains the same */ if (update_fnr(rtx, 0, rtx->gbl.nr) <= -1) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return -1; } @@ -2894,7 +3019,7 @@ static int run_nextoutfile (hawk_rtx_t* rtx, hawk_nde_nextfile_t* nde) if (n <= -1) { /* adjust the error line */ - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return -1; } @@ -3003,7 +3128,7 @@ static hawk_val_t* assign_topval_to_var (hawk_rtx_t* rtx, hawk_nde_var_t* var, h if (HAWK_UNLIKELY(hawk_htb_upsert(rtx->named, var->id.name.ptr, var->id.name.len, val, 0) == HAWK_NULL)) { hawk_rtx_refdownval(rtx, val); - ADJERR_LOC (rtx, &var->loc); + ADJERR_LOC(rtx, &var->loc); return HAWK_NULL; } break; @@ -3019,7 +3144,7 @@ static hawk_val_t* assign_topval_to_var (hawk_rtx_t* rtx, hawk_nde_var_t* var, h hawk_rtx_refdownval(rtx, val); if (HAWK_UNLIKELY(x <= -1)) { - ADJERR_LOC (rtx, &var->loc); + ADJERR_LOC(rtx, &var->loc); return HAWK_NULL; } break; @@ -3059,7 +3184,7 @@ static hawk_val_t* assign_newmapval_to_var (hawk_rtx_t* rtx, hawk_nde_var_t* var tmp = hawk_rtx_makemapval(rtx); if (HAWK_UNLIKELY(!tmp)) { - ADJERR_LOC (rtx, &var->loc); + ADJERR_LOC(rtx, &var->loc); return HAWK_NULL; } @@ -3237,7 +3362,7 @@ static int run_delete (hawk_rtx_t* rtx, hawk_nde_delete_t* nde) return 0; oops: - ADJERR_LOC (rtx, &var->loc); + ADJERR_LOC(rtx, &var->loc); return -1; } @@ -3281,7 +3406,7 @@ static int run_reset (hawk_rtx_t* rtx, hawk_nde_reset_t* nde) default: /* the reset statement can only be called with plain variables */ HAWK_ASSERT (!"should never happen - wrong target for @reset"); - hawk_rtx_seterrnum (rtx, &var->loc, HAWK_EBADARG); + hawk_rtx_seterrnum(rtx, &var->loc, HAWK_EBADARG); return -1; } } @@ -3445,7 +3570,7 @@ static int run_print (hawk_rtx_t* rtx, hawk_nde_print_t* nde) return xret; oops: - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); oops_1: if (out_v) @@ -3556,7 +3681,7 @@ static int run_printf (hawk_rtx_t* rtx, hawk_nde_print_t* nde) return xret; oops: - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); oops_1: if (out_v) @@ -3660,7 +3785,7 @@ static hawk_val_t* eval_expression (hawk_rtx_t* rtx, hawk_nde_t* nde) vs.ptr = hawk_rtx_getvaloocstr(rtx, rtx->inrec.d0, &vs.len); if (!vs.ptr) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); hawk_rtx_refdownval(rtx, v); return HAWK_NULL; } @@ -3674,7 +3799,7 @@ static hawk_val_t* eval_expression (hawk_rtx_t* rtx, hawk_nde_t* nde) if (free_vs) hawk_rtx_freevaloocstr (rtx, rtx->inrec.d0, vs.ptr); if (n <= -1) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -3742,7 +3867,7 @@ static hawk_val_t* eval_expression0 (hawk_rtx_t* rtx, hawk_nde_t* nde) * clears the error number. run_main will * detect this condition and treat it as a * non-error condition.*/ - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ENOERR); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_ENOERR); return HAWK_NULL; } @@ -3757,7 +3882,7 @@ static hawk_val_t* eval_group (hawk_rtx_t* rtx, hawk_nde_t* nde) /* eval_binop_in evaluates the HAWK_NDE_GRP specially. * so this function should never be reached. */ HAWK_ASSERT (!"should never happen - NDE_GRP only for in"); - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EINTERN); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EINTERN); return HAWK_NULL; #endif @@ -3920,7 +4045,7 @@ static hawk_val_t* do_assignment (hawk_rtx_t* rtx, hawk_nde_t* var, hawk_val_t* return ret; exit_on_error: - hawk_rtx_seterrnum (rtx, &var->loc, errnum); + hawk_rtx_seterrnum(rtx, &var->loc, errnum); return HAWK_NULL; } @@ -3969,7 +4094,7 @@ static hawk_val_t* do_assignment_nonindexed (hawk_rtx_t* rtx, hawk_nde_var_t* va if (hawk_htb_upsert(rtx->named, var->id.name.ptr, var->id.name.len, val, 0) == HAWK_NULL) { - ADJERR_LOC (rtx, &var->loc); + ADJERR_LOC(rtx, &var->loc); return HAWK_NULL; } @@ -3981,7 +4106,7 @@ static hawk_val_t* do_assignment_nonindexed (hawk_rtx_t* rtx, hawk_nde_var_t* va { if (set_global(rtx, var->id.idxa, var, val, 1) == -1) { - ADJERR_LOC (rtx, &var->loc); + ADJERR_LOC(rtx, &var->loc); return HAWK_NULL; } break; @@ -4052,7 +4177,7 @@ static hawk_val_t* do_assignment_nonindexed (hawk_rtx_t* rtx, hawk_nde_var_t* va } default: - hawk_rtx_seterrnum (rtx, &var->loc, HAWK_EINTERN); + hawk_rtx_seterrnum(rtx, &var->loc, HAWK_EINTERN); return HAWK_NULL; } @@ -4184,7 +4309,7 @@ static hawk_val_t* do_assignment_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var, { if (HAWK_UNLIKELY(hawk_map_upsert(map, str, len, val, 0) == HAWK_NULL)) { - ADJERR_LOC (rtx, &var->loc); + ADJERR_LOC(rtx, &var->loc); goto oops; } } @@ -4192,7 +4317,7 @@ static hawk_val_t* do_assignment_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var, { if (HAWK_UNLIKELY(hawk_arr_upsert(arr, idx, val, 0) == HAWK_ARR_NIL)) { - ADJERR_LOC (rtx, &var->loc); + ADJERR_LOC(rtx, &var->loc); goto oops; } } @@ -4243,13 +4368,13 @@ static hawk_val_t* do_assignment_positional (hawk_rtx_t* rtx, hawk_nde_pos_t* po if (n <= -1) { - hawk_rtx_seterrnum (rtx, &pos->loc, HAWK_EPOSIDX); + hawk_rtx_seterrnum(rtx, &pos->loc, HAWK_EPOSIDX); return HAWK_NULL; } if (!IS_VALID_POSIDX(lv)) { - hawk_rtx_seterrnum (rtx, &pos->loc, HAWK_EPOSIDX); + hawk_rtx_seterrnum(rtx, &pos->loc, HAWK_EPOSIDX); return HAWK_NULL; } @@ -4265,7 +4390,7 @@ static hawk_val_t* do_assignment_positional (hawk_rtx_t* rtx, hawk_nde_pos_t* po out.type = HAWK_RTX_VALTOSTR_CPLDUP; if (hawk_rtx_valtostr(rtx, val, &out) <= -1) { - ADJERR_LOC (rtx, &pos->loc); + ADJERR_LOC(rtx, &pos->loc); return HAWK_NULL; } @@ -4376,7 +4501,7 @@ static hawk_val_t* eval_binary (hawk_rtx_t* rtx, hawk_nde_t* nde) HAWK_ASSERT (binop_func[exp->opcode] != HAWK_NULL); res = binop_func[exp->opcode](rtx, left, right); - if (HAWK_UNLIKELY(!res)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!res)) ADJERR_LOC(rtx, &nde->loc); hawk_rtx_refdownval(rtx, left); hawk_rtx_refdownval(rtx, right); @@ -4397,7 +4522,7 @@ static hawk_val_t* eval_binop_lor (hawk_rtx_t* rtx, hawk_nde_t* left, hawk_nde_t ); if (res == HAWK_NULL) { - ADJERR_LOC (rtx, &left->loc); + ADJERR_LOC(rtx, &left->loc); return HAWK_NULL; } @@ -4449,7 +4574,7 @@ static hawk_val_t* eval_binop_land (hawk_rtx_t* rtx, hawk_nde_t* left, hawk_nde_ ); if (res == HAWK_NULL) { - ADJERR_LOC (rtx, &left->loc); + ADJERR_LOC(rtx, &left->loc); return HAWK_NULL; } @@ -4509,7 +4634,7 @@ static hawk_val_t* eval_binop_in (hawk_rtx_t* rtx, hawk_nde_t* left, hawk_nde_t* { /* the compiler should have handled this case */ HAWK_ASSERT (!"should never happen - it needs a plain variable"); - hawk_rtx_seterrnum (rtx, &right->loc, HAWK_EINTERN); + hawk_rtx_seterrnum(rtx, &right->loc, HAWK_EINTERN); return HAWK_NULL; } @@ -4565,7 +4690,7 @@ rvalue_ok: if (left->type == HAWK_NDE_GRP) { - hawk_rtx_seterrnum (rtx, &left->loc, HAWK_EARRIDXMULTI); + hawk_rtx_seterrnum(rtx, &left->loc, HAWK_EARRIDXMULTI); goto oops; } @@ -4575,7 +4700,7 @@ rvalue_ok: } default: - hawk_rtx_seterrnum (rtx, &right->loc, HAWK_EINROP); + hawk_rtx_seterrnum(rtx, &right->loc, HAWK_EINROP); goto oops; } @@ -4597,7 +4722,7 @@ static hawk_val_t* eval_binop_bor (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t if (hawk_rtx_valtoint(rtx, left, &l1) <= -1 || hawk_rtx_valtoint(rtx, right, &l2) <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -4611,7 +4736,7 @@ static hawk_val_t* eval_binop_bxor (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_ if (hawk_rtx_valtoint(rtx, left, &l1) <= -1 || hawk_rtx_valtoint(rtx, right, &l2) <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -4625,7 +4750,7 @@ static hawk_val_t* eval_binop_band (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_ if (hawk_rtx_valtoint(rtx, left, &l1) <= -1 || hawk_rtx_valtoint(rtx, right, &l2) <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -4684,7 +4809,7 @@ static HAWK_INLINE int __cmp_ensure_not_equal (hawk_rtx_t* rtx, cmp_op_t op_hint return 1; /* make LE false by claiming greater */ default: - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return -1; } } @@ -5503,14 +5628,14 @@ static HAWK_INLINE int __cmp_map_fun (hawk_rtx_t* rtx, hawk_val_t* left, hawk_va static HAWK_INLINE int __cmp_map_map (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t* right, cmp_op_t op_hint) { /* can't compare a map with a map */ - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return CMP_ERROR; } static HAWK_INLINE int __cmp_map_arr (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t* right, cmp_op_t op_hint) { /* can't compare a map with an array */ - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return CMP_ERROR; } @@ -5574,14 +5699,14 @@ static HAWK_INLINE int __cmp_arr_fun (hawk_rtx_t* rtx, hawk_val_t* left, hawk_va static HAWK_INLINE int __cmp_arr_map (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t* right, cmp_op_t op_hint) { /* can't compare a map with a map */ - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return CMP_ERROR; } static HAWK_INLINE int __cmp_arr_arr (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t* right, cmp_op_t op_hint) { /* can't compare a map with an array */ - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return CMP_ERROR; } @@ -5614,7 +5739,7 @@ static HAWK_INLINE int __cmp_val (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t* if (!(rtx->hawk->opt.trait & HAWK_FLEXMAP) && (lvtype == HAWK_VAL_MAP || rvtype == HAWK_VAL_MAP || lvtype == HAWK_VAL_ARR || rvtype == HAWK_VAL_ARR)) { /* a map can't be compared againt other values in the non-flexible mode. */ - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return -1; } @@ -5785,7 +5910,7 @@ static hawk_val_t* eval_binop_lshift (hawk_rtx_t* rtx, hawk_val_t* left, hawk_va if (hawk_rtx_valtoint(rtx, left, &l1) <= -1 || hawk_rtx_valtoint(rtx, right, &l2) <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -5799,7 +5924,7 @@ static hawk_val_t* eval_binop_rshift (hawk_rtx_t* rtx, hawk_val_t* left, hawk_va if (hawk_rtx_valtoint(rtx, left, &l1) <= -1 || hawk_rtx_valtoint(rtx, right, &l2) <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -5817,7 +5942,7 @@ static hawk_val_t* eval_binop_plus (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_ if (n1 <= -1 || n2 <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } /* @@ -5847,7 +5972,7 @@ static hawk_val_t* eval_binop_minus (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val if (n1 <= -1 || n2 <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -5870,7 +5995,7 @@ static hawk_val_t* eval_binop_mul (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t if (n1 <= -1 || n2 <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -5894,7 +6019,7 @@ static hawk_val_t* eval_binop_div (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t if (n1 <= -1 || n2 <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -5904,7 +6029,7 @@ static hawk_val_t* eval_binop_div (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t case 0: if (l2 == 0) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EDIVBY0); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EDIVBY0); return HAWK_NULL; } @@ -5951,7 +6076,7 @@ static hawk_val_t* eval_binop_idiv (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_ if (n1 <= -1 || n2 <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -5961,7 +6086,7 @@ static hawk_val_t* eval_binop_idiv (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_ case 0: if (l2 == 0) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EDIVBY0); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EDIVBY0); return HAWK_NULL; } res = hawk_rtx_makeintval ( @@ -6002,7 +6127,7 @@ static hawk_val_t* eval_binop_mod (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t if (n1 <= -1 || n2 <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -6012,7 +6137,7 @@ static hawk_val_t* eval_binop_mod (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t case 0: if (l2 == 0) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EDIVBY0); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EDIVBY0); return HAWK_NULL; } res = hawk_rtx_makeintval(rtx, (hawk_int_t)l1 % (hawk_int_t)l2); @@ -6046,7 +6171,7 @@ static hawk_val_t* eval_binop_exp (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t if (n1 <= -1 || n2 <= -1) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EOPERAND); return HAWK_NULL; } @@ -6063,7 +6188,7 @@ static hawk_val_t* eval_binop_exp (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t } else if (l1 == 0) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EDIVBY0); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EDIVBY0); return HAWK_NULL; } else @@ -6085,7 +6210,7 @@ static hawk_val_t* eval_binop_exp (hawk_rtx_t* rtx, hawk_val_t* left, hawk_val_t } else if (r1 == 0.0) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EDIVBY0); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EDIVBY0); return HAWK_NULL; } else @@ -6186,74 +6311,74 @@ static hawk_val_t* eval_binop_match0 ( if (HAWK_UNLIKELY(n <= -1)) { - ADJERR_LOC (rtx, lloc); + ADJERR_LOC(rtx, lloc); return HAWK_NULL; } res = hawk_rtx_makeintval(rtx, (n == ret)); if (HAWK_UNLIKELY(!res)) { - ADJERR_LOC (rtx, lloc); + ADJERR_LOC(rtx, lloc); return HAWK_NULL; } return res; } -static hawk_val_t* eval_binop_ma (hawk_rtx_t* run, hawk_nde_t* left, hawk_nde_t* right) +static hawk_val_t* eval_binop_ma (hawk_rtx_t* rtx, hawk_nde_t* left, hawk_nde_t* right) { hawk_val_t* lv, * rv, * res; HAWK_ASSERT (left->next == HAWK_NULL); HAWK_ASSERT (right->next == HAWK_NULL); - lv = eval_expression(run, left); + lv = eval_expression(rtx, left); if (HAWK_UNLIKELY(!lv)) return HAWK_NULL; - hawk_rtx_refupval(run, lv); + hawk_rtx_refupval(rtx, lv); - rv = eval_expression0(run, right); + rv = eval_expression0(rtx, right); if (HAWK_UNLIKELY(!rv)) { - hawk_rtx_refdownval(run, lv); + hawk_rtx_refdownval(rtx, lv); return HAWK_NULL; } - hawk_rtx_refupval(run, rv); + hawk_rtx_refupval(rtx, rv); - res = eval_binop_match0(run, lv, rv, &left->loc, &right->loc, 1); + res = eval_binop_match0(rtx, lv, rv, &left->loc, &right->loc, 1); - hawk_rtx_refdownval(run, rv); - hawk_rtx_refdownval(run, lv); + hawk_rtx_refdownval(rtx, rv); + hawk_rtx_refdownval(rtx, lv); return res; } -static hawk_val_t* eval_binop_nm (hawk_rtx_t* run, hawk_nde_t* left, hawk_nde_t* right) +static hawk_val_t* eval_binop_nm (hawk_rtx_t* rtx, hawk_nde_t* left, hawk_nde_t* right) { hawk_val_t* lv, * rv, * res; HAWK_ASSERT (left->next == HAWK_NULL); HAWK_ASSERT (right->next == HAWK_NULL); - lv = eval_expression(run, left); + lv = eval_expression(rtx, left); if (HAWK_UNLIKELY(!lv)) return HAWK_NULL; - hawk_rtx_refupval(run, lv); + hawk_rtx_refupval(rtx, lv); - rv = eval_expression0(run, right); + rv = eval_expression0(rtx, right); if (HAWK_UNLIKELY(!rv)) { - hawk_rtx_refdownval(run, lv); + hawk_rtx_refdownval(rtx, lv); return HAWK_NULL; } - hawk_rtx_refupval(run, rv); + hawk_rtx_refupval(rtx, rv); - res = eval_binop_match0(run, lv, rv, &left->loc, &right->loc, 0); + res = eval_binop_match0(rtx, lv, rv, &left->loc, &right->loc, 0); - hawk_rtx_refdownval(run, rv); - hawk_rtx_refdownval(run, lv); + hawk_rtx_refdownval(rtx, rv); + hawk_rtx_refdownval(rtx, lv); return res; } @@ -6327,7 +6452,7 @@ static hawk_val_t* eval_unary (hawk_rtx_t* rtx, hawk_nde_t* nde) exit_func: hawk_rtx_refdownval(rtx, left); - if (HAWK_UNLIKELY(!res)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!res)) ADJERR_LOC(rtx, &nde->loc); return res; } @@ -6349,7 +6474,7 @@ static hawk_val_t* eval_incpre (hawk_rtx_t* rtx, hawk_nde_t* nde) /*exp->left->type > HAWK_NDE_ARGIDX) XXX */ exp->left->type > HAWK_NDE_POS) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EOPERAND); return HAWK_NULL; } @@ -6366,7 +6491,7 @@ static hawk_val_t* eval_incpre (hawk_rtx_t* rtx, hawk_nde_t* nde) else { HAWK_ASSERT (!"should never happen - invalid opcode"); - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EINTERN); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EINTERN); return HAWK_NULL; } @@ -6386,7 +6511,7 @@ static hawk_val_t* eval_incpre (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(!res)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } break; @@ -6399,7 +6524,7 @@ static hawk_val_t* eval_incpre (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(!res)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } break; @@ -6415,7 +6540,7 @@ static hawk_val_t* eval_incpre (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(n <= -1)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6432,7 +6557,7 @@ static hawk_val_t* eval_incpre (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(!res)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6468,7 +6593,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) /*exp->left->type > HAWK_NDE_ARGIDX) XXX */ exp->left->type > HAWK_NDE_POS) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EOPERAND); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EOPERAND); return HAWK_NULL; } @@ -6485,7 +6610,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) else { HAWK_ASSERT (!"should never happen - invalid opcode"); - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EINTERN); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EINTERN); return HAWK_NULL; } @@ -6506,7 +6631,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(!res)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6515,7 +6640,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_rtx_refdownval(rtx, left); hawk_rtx_freeval (rtx, res, HAWK_RTX_FREEVAL_CACHE); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6529,7 +6654,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(!res)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6538,7 +6663,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_rtx_refdownval(rtx, left); hawk_rtx_freeval (rtx, res, HAWK_RTX_FREEVAL_CACHE); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6555,7 +6680,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(n <= -1)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6565,7 +6690,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(!res)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6574,7 +6699,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_rtx_refdownval(rtx, left); hawk_rtx_freeval (rtx, res, HAWK_RTX_FREEVAL_CACHE); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } } @@ -6585,7 +6710,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) if (HAWK_UNLIKELY(!res)) { hawk_rtx_refdownval(rtx, left); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -6594,7 +6719,7 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_rtx_refdownval(rtx, left); hawk_rtx_freeval (rtx, res, HAWK_RTX_FREEVAL_CACHE); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } } @@ -6613,22 +6738,22 @@ static hawk_val_t* eval_incpst (hawk_rtx_t* rtx, hawk_nde_t* nde) return res; } -static hawk_val_t* eval_cnd (hawk_rtx_t* run, hawk_nde_t* nde) +static hawk_val_t* eval_cnd (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_val_t* tv, * v; hawk_nde_cnd_t* cnd = (hawk_nde_cnd_t*)nde; HAWK_ASSERT (cnd->test->next == HAWK_NULL); - tv = eval_expression(run, cnd->test); + tv = eval_expression(rtx, cnd->test); if (HAWK_UNLIKELY(!tv)) return HAWK_NULL; - hawk_rtx_refupval(run, tv); + hawk_rtx_refupval(rtx, tv); HAWK_ASSERT (cnd->left->next == HAWK_NULL && cnd->right->next == HAWK_NULL); - v = (hawk_rtx_valtobool(run, tv))? eval_expression(run, cnd->left): eval_expression(run, cnd->right); + v = (hawk_rtx_valtobool(rtx, tv))? eval_expression(rtx, cnd->left): eval_expression(rtx, cnd->right); - hawk_rtx_refdownval(run, tv); + hawk_rtx_refdownval(rtx, tv); return v; } @@ -6710,7 +6835,7 @@ static hawk_val_t* eval_fncall_var (hawk_rtx_t* rtx, hawk_nde_t* nde) { if (hawk_rtx_geterrnum(rtx) == HAWK_EINVAL) hawk_rtx_seterrfmt (rtx, &nde->loc, HAWK_ENOTFUN, HAWK_T("non-function value in %.*js"), call->u.var.var->id.name.len, call->u.var.var->id.name.ptr); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); rv = HAWK_NULL; } else if (call->nargs > fun->nargs && !fun->variadic) @@ -6804,7 +6929,7 @@ hawk_val_t* hawk_rtx_evalcall ( if (HAWK_UNLIKELY(HAWK_RTX_STACK_AVAIL(rtx) < stack_req)) { - hawk_rtx_seterrnum (rtx, &call->loc, HAWK_ESTACK); + hawk_rtx_seterrnum(rtx, &call->loc, HAWK_ESTACK); return HAWK_NULL; } @@ -6856,7 +6981,7 @@ hawk_val_t* hawk_rtx_evalcall ( if (call->u.fnc.spec.impl) { n = call->u.fnc.spec.impl(rtx, &call->u.fnc.info); - if (HAWK_UNLIKELY(n <= -1)) ADJERR_LOC (rtx, &call->loc); + if (HAWK_UNLIKELY(n <= -1)) ADJERR_LOC(rtx, &call->loc); } } @@ -6930,7 +7055,7 @@ hawk_val_t* hawk_rtx_evalcall ( if (HAWK_UNLIKELY(hawk_rtx_setrefval(rtx, &refv, av) <= -1)) { n = -1; - ADJERR_LOC (rtx, &call->loc); + ADJERR_LOC(rtx, &call->loc); } } } @@ -6973,7 +7098,7 @@ hawk_val_t* hawk_rtx_evalcall ( if (HAWK_UNLIKELY(hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)v, av) <= -1)) { n = -1; - ADJERR_LOC (rtx, &call->loc); + ADJERR_LOC(rtx, &call->loc); } } } @@ -7067,7 +7192,7 @@ oops_making_stack_frame: * after it is set to a reference counted value. here, it never happens */ HAWK_RTX_STACK_POP (rtx); } - ADJERR_LOC (rtx, &call->loc); + ADJERR_LOC(rtx, &call->loc); return HAWK_NULL; } @@ -7078,7 +7203,7 @@ static hawk_oow_t push_arg_from_vals (hawk_rtx_t* rtx, hawk_nde_fncall_t* call, if (HAWK_UNLIKELY(HAWK_RTX_STACK_AVAIL(rtx) < pafv->nargs)) { - hawk_rtx_seterrnum (rtx, &call->loc, HAWK_ESTACK); + hawk_rtx_seterrnum(rtx, &call->loc, HAWK_ESTACK); return (hawk_oow_t)-1; } @@ -7093,7 +7218,7 @@ static hawk_oow_t push_arg_from_vals (hawk_rtx_t* rtx, hawk_nde_fncall_t* call, v = hawk_rtx_makerefval(rtx, HAWK_VAL_REF_LCL, ref); /* this type(HAWK_VAL_REF_LCL) is fake */ if (HAWK_UNLIKELY(!v)) { - ADJERR_LOC (rtx, &call->loc); + ADJERR_LOC(rtx, &call->loc); return (hawk_oow_t)-1; } @@ -7120,7 +7245,7 @@ static hawk_oow_t push_arg_from_nde (hawk_rtx_t* rtx, hawk_nde_fncall_t* call, v if (HAWK_UNLIKELY(HAWK_RTX_STACK_AVAIL(rtx) < call->nargs)) { - hawk_rtx_seterrnum (rtx, &call->loc, HAWK_ESTACK); + hawk_rtx_seterrnum(rtx, &call->loc, HAWK_ESTACK); return (hawk_oow_t)-1; } @@ -7196,7 +7321,7 @@ static int get_reference (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_val_t*** ref) pair = hawk_htb_upsert(rtx->named, tgt->id.name.ptr, tgt->id.name.len, hawk_val_nil, 0); if (!pair) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return -1; } } @@ -7244,13 +7369,13 @@ static int get_reference (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_val_t*** ref) if (HAWK_UNLIKELY(n <= -1)) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EPOSIDX); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EPOSIDX); return -1; } if (!IS_VALID_POSIDX(lv)) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EPOSIDX); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EPOSIDX); return -1; } @@ -7259,7 +7384,7 @@ static int get_reference (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_val_t*** ref) } default: - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_ENOTREF); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_ENOTREF); return -1; } } @@ -7306,7 +7431,7 @@ static hawk_val_t** get_reference_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var) break; default: - hawk_rtx_seterrnum (rtx, &var->loc, HAWK_ENOTIDXACC); + hawk_rtx_seterrnum(rtx, &var->loc, HAWK_ENOTIDXACC); goto oops; } @@ -7352,20 +7477,20 @@ static hawk_val_t** get_reference_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var) if (container_vtype == HAWK_VAL_MAP) { v = assign_newmapval_in_map(rtx, map, str, len); - if (HAWK_UNLIKELY(!v)) { ADJERR_LOC (rtx, &var->loc); goto oops; } + if (HAWK_UNLIKELY(!v)) { ADJERR_LOC(rtx, &var->loc); goto oops; } vtype = HAWK_VAL_MAP; goto val_map; } else { v = assign_newarrval_in_arr(rtx, arr, idx); - if (HAWK_UNLIKELY(!v)) { ADJERR_LOC (rtx, &var->loc); goto oops; } + if (HAWK_UNLIKELY(!v)) { ADJERR_LOC(rtx, &var->loc); goto oops; } vtype = HAWK_VAL_ARR; goto val_arr; } } - hawk_rtx_seterrnum (rtx, &var->loc, HAWK_ENOTIDXACC); + hawk_rtx_seterrnum(rtx, &var->loc, HAWK_ENOTIDXACC); goto oops; } } @@ -7408,7 +7533,7 @@ static hawk_val_t* eval_char (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_val_t* val; val = hawk_rtx_makecharval(rtx, ((hawk_nde_char_t*)nde)->val); - if (HAWK_UNLIKELY(!val)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!val)) ADJERR_LOC(rtx, &nde->loc); return val; } @@ -7416,7 +7541,7 @@ static hawk_val_t* eval_bchr (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_val_t* val; val = hawk_rtx_makebchrval(rtx, ((hawk_nde_bchr_t*)nde)->val); - if (HAWK_UNLIKELY(!val)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!val)) ADJERR_LOC(rtx, &nde->loc); return val; } @@ -7424,7 +7549,7 @@ static hawk_val_t* eval_int (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_val_t* val; val = hawk_rtx_makeintval(rtx, ((hawk_nde_int_t*)nde)->val); - if (HAWK_UNLIKELY(!val)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!val)) ADJERR_LOC(rtx, &nde->loc); else if (HAWK_VTR_IS_POINTER(val)) ((hawk_val_int_t*)val)->nde = nde; return val; } @@ -7433,7 +7558,7 @@ static hawk_val_t* eval_flt (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_val_t* val; val = hawk_rtx_makefltval(rtx, ((hawk_nde_flt_t*)nde)->val); - if (HAWK_UNLIKELY(!val)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!val)) ADJERR_LOC(rtx, &nde->loc); else ((hawk_val_flt_t*)val)->nde = nde; return val; } @@ -7442,7 +7567,7 @@ static hawk_val_t* eval_str (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_val_t* val; val = hawk_rtx_makestrvalwithoochars(rtx, ((hawk_nde_str_t*)nde)->ptr, ((hawk_nde_str_t*)nde)->len); - if (HAWK_UNLIKELY(!val)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!val)) ADJERR_LOC(rtx, &nde->loc); return val; } @@ -7450,7 +7575,7 @@ static hawk_val_t* eval_mbs (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_val_t* val; val = hawk_rtx_makembsvalwithbchars(rtx, ((hawk_nde_mbs_t*)nde)->ptr, ((hawk_nde_mbs_t*)nde)->len); - if (HAWK_UNLIKELY(!val)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!val)) ADJERR_LOC(rtx, &nde->loc); return val; } @@ -7458,7 +7583,7 @@ static hawk_val_t* eval_rex (hawk_rtx_t* rtx, hawk_nde_t* nde) { hawk_val_t* val; val = hawk_rtx_makerexval(rtx, &((hawk_nde_rex_t*)nde)->str, ((hawk_nde_rex_t*)nde)->code); - if (HAWK_UNLIKELY(!val)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!val)) ADJERR_LOC(rtx, &nde->loc); return val; } @@ -7515,7 +7640,7 @@ static hawk_val_t* eval_xargvidx (hawk_rtx_t* rtx, hawk_nde_t* nde) hawk_rtx_refdownval(rtx, v); if (n <= -1) { - hawk_rtx_seterrnum (rtx, &xarg->pos->loc, HAWK_EPOSIDX); + hawk_rtx_seterrnum(rtx, &xarg->pos->loc, HAWK_EPOSIDX); return HAWK_NULL; } @@ -7550,7 +7675,7 @@ static hawk_val_t* eval_fun (hawk_rtx_t* rtx, hawk_nde_t* nde) } val = hawk_rtx_makefunval(rtx, fun); - if (HAWK_UNLIKELY(!val)) ADJERR_LOC (rtx, &nde->loc); + if (HAWK_UNLIKELY(!val)) ADJERR_LOC(rtx, &nde->loc); return val; } @@ -7619,7 +7744,7 @@ static hawk_val_t* eval_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var) break; default: - hawk_rtx_seterrnum (rtx, &var->loc, HAWK_ENOTIDXACC); + hawk_rtx_seterrnum(rtx, &var->loc, HAWK_ENOTIDXACC); return HAWK_NULL; } @@ -7665,20 +7790,20 @@ static hawk_val_t* eval_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var) if (container_vtype == HAWK_VAL_MAP) { v = assign_newmapval_in_map(rtx, map, str, len); - if (HAWK_UNLIKELY(!v)) { ADJERR_LOC (rtx, &var->loc); goto oops; } + if (HAWK_UNLIKELY(!v)) { ADJERR_LOC(rtx, &var->loc); goto oops; } vtype = HAWK_VAL_MAP; goto val_map; } else { v = assign_newarrval_in_arr(rtx, arr, idx); - if (HAWK_UNLIKELY(!v)) { ADJERR_LOC (rtx, &var->loc); goto oops; } + if (HAWK_UNLIKELY(!v)) { ADJERR_LOC(rtx, &var->loc); goto oops; } vtype = HAWK_VAL_ARR; goto val_arr; } } - hawk_rtx_seterrnum (rtx, &var->loc, HAWK_ENOTIDXACC); + hawk_rtx_seterrnum(rtx, &var->loc, HAWK_ENOTIDXACC); goto oops; } } @@ -7741,13 +7866,13 @@ static hawk_val_t* eval_pos (hawk_rtx_t* rtx, hawk_nde_t* nde) hawk_rtx_refdownval(rtx, v); if (n <= -1) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EPOSIDX); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EPOSIDX); return HAWK_NULL; } if (lv < 0) { - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EPOSIDX); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EPOSIDX); return HAWK_NULL; } @@ -7845,7 +7970,7 @@ read_console_again: v = hawk_rtx_makenumorstrvalwithoochars(rtx, HAWK_OOECS_PTR(buf), HAWK_OOECS_LEN(buf)); if (HAWK_UNLIKELY(!v)) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -7865,7 +7990,7 @@ read_console_again: skip_read: tmp = hawk_rtx_makeintval(rtx, n); - if (!tmp) ADJERR_LOC (rtx, &nde->loc); + if (!tmp) ADJERR_LOC(rtx, &nde->loc); return tmp; } @@ -7955,7 +8080,7 @@ read_console_again: v = hawk_rtx_makenumormbsvalwithbchars(rtx, HAWK_BECS_PTR(buf), HAWK_BECS_LEN(buf)); if (v == HAWK_NULL) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -7975,7 +8100,7 @@ read_console_again: skip_read: tmp = hawk_rtx_makeintval(rtx, n); - if (!tmp) ADJERR_LOC (rtx, &nde->loc); + if (!tmp) ADJERR_LOC(rtx, &nde->loc); return tmp; } @@ -7984,20 +8109,20 @@ static hawk_val_t* eval_getline (hawk_rtx_t* rtx, hawk_nde_t* nde) return ((hawk_nde_getline_t*)nde)->mbs? __eval_getbline(rtx, nde): __eval_getline(rtx, nde); } -static hawk_val_t* eval_print (hawk_rtx_t* run, hawk_nde_t* nde) +static hawk_val_t* eval_print (hawk_rtx_t* rtx, hawk_nde_t* nde) { - int n = run_print(run, (hawk_nde_print_t*)nde); + int n = run_print(rtx, (hawk_nde_print_t*)nde); if (n == PRINT_IOERR) n = -1; /* let print return -1 */ else if (n <= -1) return HAWK_NULL; - return hawk_rtx_makeintval(run, n); + return hawk_rtx_makeintval(rtx, n); } -static hawk_val_t* eval_printf (hawk_rtx_t* run, hawk_nde_t* nde) +static hawk_val_t* eval_printf (hawk_rtx_t* rtx, hawk_nde_t* nde) { - int n = run_printf(run, (hawk_nde_print_t*)nde); + int n = run_printf(rtx, (hawk_nde_print_t*)nde); if (n == PRINT_IOERR) n = -1; /* let print return -1 */ else if (n <= -1) return HAWK_NULL; - return hawk_rtx_makeintval(run, n); + return hawk_rtx_makeintval(rtx, n); } static int read_record (hawk_rtx_t* rtx) @@ -8063,7 +8188,7 @@ static hawk_ooch_t* idxnde_to_str (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_ooch_t if (hawk_rtx_valtoint(rtx, idx, &idxint) <= -1) { hawk_rtx_refdownval(rtx, idx); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } } @@ -8093,7 +8218,7 @@ static hawk_ooch_t* idxnde_to_str (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_ooch_t if (hawk_rtx_valtostr(rtx, idx, &out) <= -1) { hawk_rtx_refdownval(rtx, idx); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -8118,7 +8243,7 @@ static hawk_ooch_t* idxnde_to_str (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_ooch_t if (hawk_ooecs_init(&idxstr, hawk_rtx_getgem(rtx), DEF_BUF_CAPA) <= -1) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -8144,7 +8269,7 @@ static hawk_ooch_t* idxnde_to_str (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_ooch_t { hawk_rtx_refdownval(rtx, idx); hawk_ooecs_fini (&idxstr); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -8155,7 +8280,7 @@ static hawk_ooch_t* idxnde_to_str (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_ooch_t { hawk_rtx_refdownval(rtx, idx); hawk_ooecs_fini (&idxstr); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -8163,7 +8288,7 @@ static hawk_ooch_t* idxnde_to_str (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_ooch_t { hawk_rtx_refdownval(rtx, idx); hawk_ooecs_fini (&idxstr); - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return HAWK_NULL; } @@ -8194,7 +8319,7 @@ static hawk_ooi_t idxnde_to_int (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_nde_t** if (nde->next && nde->next->type != HAWK_NDE_NULL) { /* multidimensional indices inside a single brakcet is not allowed for an array */ - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EARRIDXMULTI); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EARRIDXMULTI); return -1; } @@ -8206,14 +8331,14 @@ static hawk_ooi_t idxnde_to_int (hawk_rtx_t* rtx, hawk_nde_t* nde, hawk_nde_t** hawk_rtx_refdownval(rtx, tmp); if (HAWK_UNLIKELY(n <= -1)) { - ADJERR_LOC (rtx, &nde->loc); + ADJERR_LOC(rtx, &nde->loc); return -1; } if (v < 0 || v > HAWK_INT_MAX) { /* array index out of permitted range */ - hawk_rtx_seterrnum (rtx, &nde->loc, HAWK_EARRIDXRANGE); + hawk_rtx_seterrnum(rtx, &nde->loc, HAWK_EARRIDXRANGE); return -1; } @@ -8366,7 +8491,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -8377,7 +8502,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -8473,7 +8598,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -8484,7 +8609,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -8678,7 +8803,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -8689,7 +8814,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -8729,7 +8854,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -8740,7 +8865,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -8794,7 +8919,7 @@ wp_mod_main: default: hawk_rtx_refdownval(rtx, v); - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EVALTOCHR); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EVALTOCHR); return HAWK_NULL; } @@ -8852,7 +8977,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -8863,7 +8988,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -9242,7 +9367,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -9253,7 +9378,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -9350,7 +9475,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -9361,7 +9486,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -9552,7 +9677,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -9563,7 +9688,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -9603,7 +9728,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -9614,7 +9739,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; @@ -9678,7 +9803,7 @@ wp_mod_main: default: hawk_rtx_refdownval(rtx, v); - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EVALTOCHR); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EVALTOCHR); return HAWK_NULL; } @@ -9736,7 +9861,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = hawk_rtx_getarg(rtx, stack_arg_idx); @@ -9747,7 +9872,7 @@ wp_mod_main: { if (stack_arg_idx >= nargs_on_stack) { - hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EFMTARG); + hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_EFMTARG); return HAWK_NULL; } v = val; diff --git a/lib/sio.c b/lib/sio.c index 21600e42..0b67f5da 100644 --- a/lib/sio.c +++ b/lib/sio.c @@ -156,7 +156,7 @@ int hawk_sio_init (hawk_sio_t* sio, hawk_gem_t* gem, const hawk_ooch_t* path, in if (hawk_tio_init(&sio->tio.io, gem, topt) <= -1) goto oops03; /* store the back-reference to sio in the extension area.*/ - /*HAWK_ASSERT (hawk, (&sio->tio.io + 1) == &sio->tio.xtn);*/ + /*HAWK_ASSERT(hawk, (&sio->tio.io + 1) == &sio->tio.xtn);*/ *(hawk_sio_t**)(&sio->tio.io + 1) = sio; if (hawk_tio_attachin(&sio->tio.io, file_input, sio->inbuf, HAWK_COUNTOF(sio->inbuf)) <= -1 || diff --git a/lib/std.c b/lib/std.c index f11ef3d6..2496905e 100644 --- a/lib/std.c +++ b/lib/std.c @@ -346,7 +346,7 @@ static void* std_mod_open_checked (hawk_t* hawk, const hawk_mod_spec_t* spec) { /* hawk_stdmodstartup() must have failed upon start-up. * return failure immediately */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_ENOIMPL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_ENOIMPL); return HAWK_NULL; } @@ -388,7 +388,7 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) if (lt_dladvise_init(&adv) != 0) { - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), lt_dlerror()); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), lt_dlerror()); return HAWK_NULL; } @@ -396,7 +396,7 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) /*lt_dladvise_resident (&adv); useful for debugging with valgrind */ h = lt_dlopenadvise(modpath, adv); - if (!h) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), lt_dlerror()); + if (!h) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), lt_dlerror()); lt_dladvise_destroy (&adv); @@ -407,7 +407,7 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) { void* h; h = lt_dlopen(HAWK_NULL); - if (HAWK_UNLIKELY(!h)) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), lt_dlerror()); + if (HAWK_UNLIKELY(!h)) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), lt_dlerror()); return h; } @@ -442,9 +442,9 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) if (!modpath) return HAWK_NULL; h = LoadLibrary(modpath); - if (!h) hawk_seterrnum (hawk, HAWK_NULL, hawk_syserr_to_errnum(GetLastError()); + if (!h) hawk_seterrnum(hawk, HAWK_NULL, hawk_syserr_to_errnum(GetLastError()); - hawk_freemem (hawk, modpath); + hawk_freemem(hawk, modpath); HAWK_ASSERT (HAWK_SIZEOF(h) <= HAWK_SIZEOF(void*)); return h; @@ -453,7 +453,7 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) { HMODULE h; h = GetModuleHandle(HAWK_NULL); - if (!h) hawk_seterrnum (hawk, HAWK_NULL, hawk_syserr_to_errnum(GetLastError()); + if (!h) hawk_seterrnum(hawk, HAWK_NULL, hawk_syserr_to_errnum(GetLastError()); return h; } @@ -496,17 +496,17 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) if (rc != NO_ERROR) { h = HAWK_NULL; - hawk_seterrnum (hawk, HAWK_NULL, hawk_syserr_to_errnum(rc)); + hawk_seterrnum(hawk, HAWK_NULL, hawk_syserr_to_errnum(rc)); } - hawk_freemem (hawk, modpath); + hawk_freemem(hawk, modpath); HAWK_ASSERT (HAWK_SIZEOF(h) <= HAWK_SIZEOF(void*)); return h; } else { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_ENOIMPL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_ENOIMPL); return HAWK_NULL; } @@ -545,9 +545,9 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) if (!modpath) return HAWK_NULL; h = LoadModule(modpath); - if (!h) hawk_seterrnum (hawk, HAWK_NULL, HAWK_ESYSERR); + if (!h) hawk_seterrnum(hawk, HAWK_NULL, HAWK_ESYSERR); - hawk_freemem (hawk, modpath); + hawk_freemem(hawk, modpath); HAWK_ASSERT (HAWK_SIZEOF(h) <= HAWK_SIZEOF(void*)); return h; @@ -556,7 +556,7 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) { void* h; h = GetModuleHandle(HAWK_NULL); - if (!h) hawk_seterrnum (hawk, HAWK_NULL, HAWK_ESYSERR); + if (!h) hawk_seterrnum(hawk, HAWK_NULL, HAWK_ESYSERR); return h; } @@ -591,9 +591,9 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) if (!modpath) return HAWK_NULL; h = dlopen(modpath, RTLD_NOW | RTLD_LOCAL); - if (!h) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), dlerror()); + if (!h) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), dlerror()); - hawk_freemem (hawk, modpath); + hawk_freemem(hawk, modpath); return h; } @@ -601,11 +601,11 @@ void* hawk_stdmodopen (hawk_t* hawk, const hawk_mod_spec_t* spec) { void* h; h = dlopen(NULL, RTLD_NOW | RTLD_LOCAL); - if (!h) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), dlerror()); + if (!h) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), dlerror()); return h; } #else - hawk_seterrnum (hawk, HAWK_NULL, HAWK_ENOIMPL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_ENOIMPL); return HAWK_NULL; #endif } @@ -641,11 +641,11 @@ void* hawk_stdmodgetsym (hawk_t* hawk, void* handle, const hawk_ooch_t* name) #if defined(USE_LTDL) s = lt_dlsym(handle, mname); - if (!s) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), lt_dlerror()); + if (!s) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), lt_dlerror()); #elif defined(_WIN32) s = GetProcAddress((HMODULE)handle, mname); - if (!s) hawk_seterrnum (hawk, HAWK_NULL, hawk_syserr_to_errnum(GetLastError()); + if (!s) hawk_seterrnum(hawk, HAWK_NULL, hawk_syserr_to_errnum(GetLastError()); #elif defined(__OS2__) { @@ -654,17 +654,17 @@ void* hawk_stdmodgetsym (hawk_t* hawk, void* handle, const hawk_ooch_t* name) if (rc != NO_ERROR) { s = HAWK_NULL; - hawk_seterrnum (hawk, HAWK_NULL, hawk_syserr_to_errnum(rc)); + hawk_seterrnum(hawk, HAWK_NULL, hawk_syserr_to_errnum(rc)); } } #elif defined(__DOS__) && defined(HAWK_ENABLE_DOS_DYNAMIC_MODULE) s = GetProcAddress(handle, mname); - if (!s) hawk_seterrnum (hawk, HAWK_NULL, HAWK_ESYSERR); + if (!s) hawk_seterrnum(hawk, HAWK_NULL, HAWK_ESYSERR); #elif defined(USE_DLFCN) s = dlsym(handle, mname); - if (!s) hawk_seterrfmt (hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), dlerror()); + if (!s) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ESYSERR, HAWK_T("%hs"), dlerror()); #else s = HAWK_NULL; @@ -673,7 +673,7 @@ void* hawk_stdmodgetsym (hawk_t* hawk, void* handle, const hawk_ooch_t* name) #if defined(HAWK_OOCH_IS_BCH) /* nothing to do */ #else - hawk_freemem (hawk, mname); + hawk_freemem(hawk, mname); #endif return s; @@ -910,14 +910,14 @@ static void log_write (hawk_t* hawk, hawk_bitmask_t mask, const hawk_ooch_t* msg } #endif - write_log (hawk, logfd, ts, tslen); + write_log(hawk, logfd, ts, tslen); } if (logfd == xtn->log.fd && (xtn->log.fd_flag & LOGFD_TTY)) { - if (mask & HAWK_LOG_FATAL) write_log (hawk, logfd, "\x1B[1;31m", 7); - else if (mask & HAWK_LOG_ERROR) write_log (hawk, logfd, "\x1B[1;32m", 7); - else if (mask & HAWK_LOG_WARN) write_log (hawk, logfd, "\x1B[1;33m", 7); + if (mask & HAWK_LOG_FATAL) write_log(hawk, logfd, "\x1B[1;31m", 7); + else if (mask & HAWK_LOG_ERROR) write_log(hawk, logfd, "\x1B[1;32m", 7); + else if (mask & HAWK_LOG_WARN) write_log(hawk, logfd, "\x1B[1;33m", 7); } #if defined(HAWK_OOCH_IS_UCH) @@ -956,15 +956,15 @@ static void log_write (hawk_t* hawk, hawk_bitmask_t mask, const hawk_ooch_t* msg } } #else - write_log (hawk, logfd, msg, len); + write_log(hawk, logfd, msg, len); #endif if (logfd == xtn->log.fd && (xtn->log.fd_flag & LOGFD_TTY)) { - if (mask & (HAWK_LOG_FATAL | HAWK_LOG_ERROR | HAWK_LOG_WARN)) write_log (hawk, logfd, "\x1B[0m", 4); + if (mask & (HAWK_LOG_FATAL | HAWK_LOG_ERROR | HAWK_LOG_WARN)) write_log(hawk, logfd, "\x1B[0m", 4); } - flush_log (hawk, logfd); + flush_log(hawk, logfd); } /* ----------------------------------------------------------------------- */ @@ -1054,7 +1054,7 @@ hawk_t* hawk_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t xtn->ecb.close = fini_xtn; xtn->ecb.clear = clear_xtn; xtn->ecb.ctx = HAWK_NULL; - hawk_pushecb (hawk, &xtn->ecb); + hawk_pushecb(hawk, &xtn->ecb); return hawk; @@ -1070,7 +1070,7 @@ static hawk_sio_t* open_sio (hawk_t* hawk, const hawk_ooch_t* file, int flags) if (sio == HAWK_NULL) { const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EOPEN, HAWK_T("unable to open %js - %js"), file, bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EOPEN, HAWK_T("unable to open %js - %js"), file, bem); } return sio; } @@ -1101,7 +1101,7 @@ static hawk_sio_t* open_sio_std (hawk_t* hawk, hawk_sio_std_t std, int flags) if (sio == HAWK_NULL) { const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EOPEN, HAWK_T("unable to open %js - %js"), &sio_std_names[std], bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EOPEN, HAWK_T("unable to open %js - %js"), &sio_std_names[std], bem); } return sio; } @@ -1218,7 +1218,7 @@ static int open_parsestd (hawk_t* hawk, hawk_sio_arg_t* arg, xtn_t* xtn, hawk_oo return 0; default: - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINTERN); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINTERN); return -1; } } @@ -1253,7 +1253,7 @@ static int fill_sio_arg_unique_id (hawk_t* hawk, hawk_sio_arg_t* arg, const hawk if (!bpath) return -1; x = HAWK_STAT(bpath, &st); - hawk_freemem (hawk, bpath); + hawk_freemem(hawk, bpath); if (x <= -1) return -1; #endif @@ -1283,7 +1283,7 @@ int hawk_stdplainfileexists (hawk_t* hawk, const hawk_ooch_t* file) tmp = hawk_duputobcstr(hawk, file, HAWK_NULL); if (!tmp) return 0; n = stat(tmp, &st); - hawk_freemem (hawk, tmp); + hawk_freemem(hawk, tmp); if (n == -1) return 0; #else if (stat(file, &st) == -1) return 0; @@ -1384,7 +1384,7 @@ static hawk_ooi_t sf_in_open (hawk_t* hawk, hawk_sio_arg_t* arg, xtn_t* xtn) } xpath = hawk_addsionamewithoochars(hawk, path, hawk_count_oocstr(path)); - if (dbuf) hawk_freemem (hawk, dbuf); + if (dbuf) hawk_freemem(hawk, dbuf); } else { @@ -1408,14 +1408,14 @@ static hawk_ooi_t sf_in_open (hawk_t* hawk, hawk_sio_arg_t* arg, xtn_t* xtn) const hawk_ooch_t* bem; fail: bem = hawk_backuperrmsg(hawk); - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EOPEN, HAWK_T("unable to open %js - %js"), arg->name, bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EOPEN, HAWK_T("unable to open %js - %js"), arg->name, bem); return -1; } arg->path = xpath; /* TODO: use the system handle(file descriptor) instead of the path? */ /*syshnd = hawk_sio_gethnd(arg->handle);*/ - fill_sio_arg_unique_id (hawk, arg, xpath); /* ignore failure */ + fill_sio_arg_unique_id(hawk, arg, xpath); /* ignore failure */ return 0; } @@ -1478,9 +1478,9 @@ static hawk_ooi_t sf_in_read (hawk_t* hawk, hawk_sio_arg_t* arg, hawk_ooch_t* da const hawk_uch_t* path; path = xtn->s.in.x[xtn->s.in.xindex].u.fileu.path; if (path) - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %ls - %js"), path, bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %ls - %js"), path, bem); else - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %js - %js"), sio_std_names[HAWK_SIO_STDIN].ptr, bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %js - %js"), sio_std_names[HAWK_SIO_STDIN].ptr, bem); } break; @@ -1496,9 +1496,9 @@ static hawk_ooi_t sf_in_read (hawk_t* hawk, hawk_sio_arg_t* arg, hawk_ooch_t* da const hawk_bch_t* path; path = xtn->s.in.x[xtn->s.in.xindex].u.fileb.path; if (path) - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %hs - %js"), path, bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %hs - %js"), path, bem); else - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %js - %js"), sio_std_names[HAWK_SIO_STDIN].ptr, bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %js - %js"), sio_std_names[HAWK_SIO_STDIN].ptr, bem); } break; @@ -1523,7 +1523,7 @@ static hawk_ooi_t sf_in_read (hawk_t* hawk, hawk_sio_arg_t* arg, hawk_ooch_t* da wcslen = size; if ((m = hawk_conv_bchars_to_uchars_with_cmgr(xtn->s.in.u.bcs.ptr, &mbslen, data, &wcslen, hawk_getcmgr(hawk), 0)) <= -1 && m != -2) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); n = -1; } else @@ -1545,7 +1545,7 @@ static hawk_ooi_t sf_in_read (hawk_t* hawk, hawk_sio_arg_t* arg, hawk_ooch_t* da mbslen = size; if ((m = hawk_conv_uchars_to_bchars_with_cmgr(xtn->s.in.u.ucs.ptr, &wcslen, data, &mbslen, hawk_getcmgr(hawk))) <= -1 && m != -2) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); n = -1; } else @@ -1561,7 +1561,7 @@ static hawk_ooi_t sf_in_read (hawk_t* hawk, hawk_sio_arg_t* arg, hawk_ooch_t* da default: /* this should never happen */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINTERN); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINTERN); n = -1; break; } @@ -1599,7 +1599,7 @@ static hawk_ooi_t sf_in_read (hawk_t* hawk, hawk_sio_arg_t* arg, hawk_ooch_t* da if (n <= -1) { const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %js - %js"), arg->name, bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %js - %js"), arg->name, bem); } return n; } @@ -1621,7 +1621,7 @@ static hawk_ooi_t sf_in (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* arg, return sf_in_read(hawk, arg, data, size, xtn); default: - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINTERN); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINTERN); return -1; } } @@ -1655,7 +1655,7 @@ static hawk_ooi_t sf_out (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* arg, upath = hawk_dupbtoucstr(hawk, xtn->s.out.x->u.fileb.path, HAWK_NULL, 1); if (!upath) return -1; xtn->s.out.u.file.sio = open_sio(hawk, upath, HAWK_SIO_WRITE | HAWK_SIO_CREATE | HAWK_SIO_TRUNCATE | HAWK_SIO_IGNOREECERR); - hawk_freemem (hawk, upath); + hawk_freemem(hawk, upath); #else xtn->s.out.u.file.sio = open_sio(hawk, xtn->s.out.x->u.fileb.path, HAWK_SIO_WRITE | HAWK_SIO_CREATE | HAWK_SIO_TRUNCATE | HAWK_SIO_IGNOREECERR); #endif @@ -1686,7 +1686,7 @@ static hawk_ooi_t sf_out (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* arg, bpath = hawk_duputobcstr(hawk, xtn->s.out.x->u.fileu.path, HAWK_NULL); if (!bpath) return -1; xtn->s.out.u.file.sio = open_sio(hawk, bpath, HAWK_SIO_WRITE | HAWK_SIO_CREATE | HAWK_SIO_TRUNCATE | HAWK_SIO_IGNOREECERR); - hawk_freemem (hawk, bpath); + hawk_freemem(hawk, bpath); #endif if (xtn->s.out.u.file.sio == HAWK_NULL) return -1; } @@ -1757,7 +1757,7 @@ static hawk_ooi_t sf_out (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* arg, const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); ioname = xtn->s.out.x->u.file.path; if (!ioname) ioname = sio_std_names[HAWK_SIO_STDOUT].ptr; - hawk_seterrfmt (hawk, HAWK_NULL, HAWK_EWRITE, HAWK_T("unable to write to %js - %js"), ioname, bem); + hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EWRITE, HAWK_T("unable to write to %js - %js"), ioname, bem); } return n; } @@ -1784,7 +1784,7 @@ static hawk_ooi_t sf_out (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* arg, if (hawk_becs_setlen(xtn->s.out.u.bcs.buf, orglen + mbslen) == (hawk_oow_t)-1) return -1; wcslen = size; - hawk_convutobchars (hawk, data, &wcslen, HAWK_BECS_CPTR(xtn->s.out.u.bcs.buf, orglen), &mbslen); + hawk_convutobchars(hawk, data, &wcslen, HAWK_BECS_CPTR(xtn->s.out.u.bcs.buf, orglen), &mbslen); size = wcslen; return size; @@ -1805,7 +1805,7 @@ static hawk_ooi_t sf_out (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* arg, if (hawk_uecs_setlen(xtn->s.out.u.ucs.buf, orglen + wcslen) == (hawk_oow_t)-1) return -1; mbslen = size; - hawk_convbtouchars (hawk, data, &mbslen, HAWK_UECS_CPTR(xtn->s.out.u.ucs.buf, orglen), &wcslen, 0); + hawk_convbtouchars(hawk, data, &mbslen, HAWK_UECS_CPTR(xtn->s.out.u.ucs.buf, orglen), &wcslen, 0); size = mbslen; return size; @@ -1827,7 +1827,7 @@ static hawk_ooi_t sf_out (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* arg, } internal_error: - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINTERN); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINTERN); return -1; } @@ -1846,7 +1846,7 @@ int hawk_parsestd (hawk_t* hawk, hawk_parsestd_t in[], hawk_parsestd_t* out) { /* the input is a must. at least 1 file or 1 string * must be specified */ - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); return -1; } @@ -1863,7 +1863,7 @@ int hawk_parsestd (hawk_t* hawk, hawk_parsestd_t in[], hawk_parsestd_t* out) out->type != HAWK_PARSESTD_BCS && out->type != HAWK_PARSESTD_UCS) { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); return -1; } sio.out = sf_out; @@ -3125,18 +3125,18 @@ done: { if (xocf) { - for (i = 0; xocf[i]; i++) hawk_freemem (hawk, xocf[i]); - hawk_freemem (hawk, xocf); + for (i = 0; xocf[i]; i++) hawk_freemem(hawk, xocf[i]); + hawk_freemem(hawk, xocf); } if (xicf) { - for (i = 0; xicf[i]; i++) hawk_freemem (hawk, xicf[i]); - hawk_freemem (hawk, xicf); + for (i = 0; xicf[i]; i++) hawk_freemem(hawk, xicf[i]); + hawk_freemem(hawk, xicf); } } #if defined(HAWK_OOCH_IS_UCH) - hawk_freemem (hawk, xid); + hawk_freemem(hawk, xid); #endif return rtx; @@ -3206,18 +3206,18 @@ done: { if (xocf) { - for (i = 0; xocf[i]; i++) hawk_freemem (hawk, xocf[i]); - hawk_freemem (hawk, xocf); + for (i = 0; xocf[i]; i++) hawk_freemem(hawk, xocf[i]); + hawk_freemem(hawk, xocf); } if (xicf) { - for (i = 0; xicf[i]; i++) hawk_freemem (hawk, xicf[i]); - hawk_freemem (hawk, xicf); + for (i = 0; xicf[i]; i++) hawk_freemem(hawk, xicf[i]); + hawk_freemem(hawk, xicf); } } #if defined(HAWK_OOCH_IS_BCH) - hawk_freemem (hawk, xid); + hawk_freemem(hawk, xid); #endif return rtx; @@ -3532,7 +3532,7 @@ static int add_functions (hawk_t* hawk) for (i = 0; i < HAWK_COUNTOF(fnctab); i++) { - if (hawk_addfnc (hawk, fnctab[i].name, &fnctab[i].spec) == HAWK_NULL) return -1; + if (hawk_addfnc(hawk, fnctab[i].name, &fnctab[i].spec) == HAWK_NULL) return -1; } return 0; diff --git a/lib/tree-prv.h b/lib/tree-prv.h index 1086f9ec..69f95d4a 100644 --- a/lib/tree-prv.h +++ b/lib/tree-prv.h @@ -75,6 +75,8 @@ typedef struct hawk_nde_fncall_t hawk_nde_fncall_t; typedef struct hawk_nde_getline_t hawk_nde_getline_t; typedef struct hawk_nde_if_t hawk_nde_if_t; +typedef struct hawk_nde_switch_t hawk_nde_switch_t; +typedef struct hawk_nde_case_t hawk_nde_case_t; typedef struct hawk_nde_while_t hawk_nde_while_t; typedef struct hawk_nde_for_t hawk_nde_for_t; typedef struct hawk_nde_forin_t hawk_nde_forin_t; @@ -280,6 +282,23 @@ struct hawk_nde_if_t hawk_nde_t* else_part; /* optional */ }; +/* HAWK_NDE_SWITCH */ +struct hawk_nde_switch_t +{ + HAWK_NDE_HDR; + hawk_nde_t* test; + hawk_nde_t* case_part; /* optional */ + hawk_nde_t* default_part; /* optional */ +}; + +/* HAWK_NDE_CASE */ +struct hawk_nde_case_t +{ + HAWK_NDE_HDR; + hawk_nde_t* val; + hawk_nde_t* action; +}; + /* HAWK_NDE_WHILE, HAWK_NDE_DOWHILE */ struct hawk_nde_while_t { diff --git a/lib/tree.c b/lib/tree.c index 63bf6a87..6b6107ac 100644 --- a/lib/tree.c +++ b/lib/tree.c @@ -111,15 +111,15 @@ static const hawk_ooch_t* print_outop_str[] = HAWK_T("") }; -#define PUT_SRCSTR(hawk,str) do { if (hawk_putsrcoocstr (hawk, str) == -1) return -1; } while(0) +#define PUT_SRCSTR(hawk,str) do { if (hawk_putsrcoocstr(hawk, str) == -1) return -1; } while(0) #define PUT_NL(hawk) do { \ - if (hawk->opt.trait & HAWK_CRLF) PUT_SRCSTR (hawk, HAWK_T("\r")); \ - PUT_SRCSTR (hawk, HAWK_T("\n")); \ + if (hawk->opt.trait & HAWK_CRLF) PUT_SRCSTR(hawk, HAWK_T("\r")); \ + PUT_SRCSTR(hawk, HAWK_T("\n")); \ } while(0) #define PUT_SRCSTRN(hawk,str,len) do { \ - if (hawk_putsrcoochars (hawk, str, len) == -1) return -1; \ + if (hawk_putsrcoochars(hawk, str, len) == -1) return -1; \ } while(0) #define PRINT_TABS(hawk,depth) do { \ @@ -152,7 +152,7 @@ static int print_tabs (hawk_t* hawk, int depth) { while (depth > 0) { - PUT_SRCSTR (hawk, HAWK_T("\t")); + PUT_SRCSTR(hawk, HAWK_T("\t")); depth--; } @@ -165,27 +165,27 @@ static int print_printx (hawk_t* hawk, hawk_nde_print_t* px) if (px->type == HAWK_NDE_PRINT) { - hawk_getkwname (hawk, HAWK_KWID_PRINT, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); + hawk_getkwname(hawk, HAWK_KWID_PRINT, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); } else { - hawk_getkwname (hawk, HAWK_KWID_PRINTF, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); + hawk_getkwname(hawk, HAWK_KWID_PRINTF, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); } if (px->args != HAWK_NULL) { - PUT_SRCSTR (hawk, HAWK_T(" ")); - PRINT_EXPR_LIST (hawk, px->args); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PRINT_EXPR_LIST(hawk, px->args); } if (px->out != HAWK_NULL) { - PUT_SRCSTR (hawk, HAWK_T(" ")); - PUT_SRCSTR (hawk, print_outop_str[px->out_type]); - PUT_SRCSTR (hawk, HAWK_T(" ")); - PRINT_EXPR (hawk, px->out); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PUT_SRCSTR(hawk, print_outop_str[px->out_type]); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PRINT_EXPR(hawk, px->out); } return 0; @@ -201,15 +201,15 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { hawk_nde_t* p = ((hawk_nde_grp_t*)nde)->body; - PUT_SRCSTR (hawk, HAWK_T("(")); + PUT_SRCSTR(hawk, HAWK_T("(")); while (p != HAWK_NULL) { - PRINT_EXPR (hawk, p); + PRINT_EXPR(hawk, p); if (p->next != HAWK_NULL) - PUT_SRCSTR (hawk, HAWK_T(",")); + PUT_SRCSTR(hawk, HAWK_T(",")); p = p->next; } - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } @@ -217,11 +217,11 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { hawk_nde_ass_t* px = (hawk_nde_ass_t*)nde; - PRINT_EXPR (hawk, px->left); - PUT_SRCSTR (hawk, HAWK_T(" ")); - PUT_SRCSTR (hawk, assop_str[px->opcode]); - PUT_SRCSTR (hawk, HAWK_T(" ")); - PRINT_EXPR (hawk, px->right); + PRINT_EXPR(hawk, px->left); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PUT_SRCSTR(hawk, assop_str[px->opcode]); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PRINT_EXPR(hawk, px->right); HAWK_ASSERT (px->right->next == HAWK_NULL); break; @@ -231,21 +231,21 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { hawk_nde_exp_t* px = (hawk_nde_exp_t*)nde; - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR (hawk, px->left); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR(hawk, px->left); HAWK_ASSERT (px->left->next == HAWK_NULL); - PUT_SRCSTR (hawk, HAWK_T(" ")); - PUT_SRCSTR (hawk, binop_str[px->opcode][(hawk->opt.trait & HAWK_BLANKCONCAT)? 0: 1]); - PUT_SRCSTR (hawk, HAWK_T(" ")); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PUT_SRCSTR(hawk, binop_str[px->opcode][(hawk->opt.trait & HAWK_BLANKCONCAT)? 0: 1]); + PUT_SRCSTR(hawk, HAWK_T(" ")); if (px->right->type == HAWK_NDE_ASS) - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR (hawk, px->right); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR(hawk, px->right); if (px->right->type == HAWK_NDE_ASS) - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, HAWK_T(")")); HAWK_ASSERT (px->right->next == HAWK_NULL); - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } @@ -254,12 +254,12 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) hawk_nde_exp_t* px = (hawk_nde_exp_t*)nde; HAWK_ASSERT (px->right == HAWK_NULL); - PUT_SRCSTR (hawk, HAWK_T("(")); - PUT_SRCSTR (hawk, unrop_str[px->opcode]); - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR (hawk, px->left); - PUT_SRCSTR (hawk, HAWK_T(")")); - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, HAWK_T("(")); + PUT_SRCSTR(hawk, unrop_str[px->opcode]); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR(hawk, px->left); + PUT_SRCSTR(hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } @@ -268,10 +268,10 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) hawk_nde_exp_t* px = (hawk_nde_exp_t*)nde; HAWK_ASSERT (px->right == HAWK_NULL); - PUT_SRCSTR (hawk, incop_str[px->opcode]); - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR (hawk, px->left); - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, incop_str[px->opcode]); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR(hawk, px->left); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } @@ -280,10 +280,10 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) hawk_nde_exp_t* px = (hawk_nde_exp_t*)nde; HAWK_ASSERT (px->right == HAWK_NULL); - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR (hawk, px->left); - PUT_SRCSTR (hawk, HAWK_T(")")); - PUT_SRCSTR (hawk, incop_str[px->opcode]); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR(hawk, px->left); + PUT_SRCSTR(hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, incop_str[px->opcode]); break; } @@ -291,13 +291,13 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { hawk_nde_cnd_t* px = (hawk_nde_cnd_t*)nde; - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR (hawk, px->test); - PUT_SRCSTR (hawk, HAWK_T(")?")); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR(hawk, px->test); + PUT_SRCSTR(hawk, HAWK_T(")?")); - PRINT_EXPR (hawk, px->left); - PUT_SRCSTR (hawk, HAWK_T(":")); - PRINT_EXPR (hawk, px->right); + PRINT_EXPR(hawk, px->left); + PUT_SRCSTR(hawk, HAWK_T(":")); + PRINT_EXPR(hawk, px->right); break; } @@ -306,33 +306,33 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) hawk_ooch_t tmp = ((hawk_nde_char_t*)nde)->val; hawk_ooch_t buf[16]; - PUT_SRCSTR (hawk, HAWK_T("\'")); + PUT_SRCSTR(hawk, HAWK_T("\'")); if (tmp == '\0') - PUT_SRCSTR (hawk, HAWK_T("\\0")); + PUT_SRCSTR(hawk, HAWK_T("\\0")); else if (tmp == '\'') - PUT_SRCSTR (hawk, HAWK_T("\\'")); + PUT_SRCSTR(hawk, HAWK_T("\\'")); else if (hawk_is_ooch_print(tmp)) - PUT_SRCSTRN (hawk, &tmp, 1); + PUT_SRCSTRN(hawk, &tmp, 1); #if defined(HAWK_OOCH_IS_UCH) else if (tmp <= 0xFFFF) { - hawk_fmttooocstr (hawk, buf, HAWK_COUNTOF(buf), HAWK_T("\\u%04x"), (hawk_oochu_t)tmp); - PUT_SRCSTR (hawk, buf); + hawk_fmttooocstr(hawk, buf, HAWK_COUNTOF(buf), HAWK_T("\\u%04x"), (hawk_oochu_t)tmp); + PUT_SRCSTR(hawk, buf); } else { - hawk_fmttooocstr (hawk, buf, HAWK_COUNTOF(buf), HAWK_T("\\U%08x"), (hawk_oochu_t)tmp); - PUT_SRCSTR (hawk, buf); + hawk_fmttooocstr(hawk, buf, HAWK_COUNTOF(buf), HAWK_T("\\U%08x"), (hawk_oochu_t)tmp); + PUT_SRCSTR(hawk, buf); } #else else { - hawk_fmttooocstr (hawk, buf, HAWK_COUNTOF(buf), HAWK_T("\\x%02x"), (hawk_oochu_t)tmp); - PUT_SRCSTR (hawk, buf); + hawk_fmttooocstr(hawk, buf, HAWK_COUNTOF(buf), HAWK_T("\\x%02x"), (hawk_oochu_t)tmp); + PUT_SRCSTR(hawk, buf); } #endif - PUT_SRCSTR (hawk, HAWK_T("\'")); + PUT_SRCSTR(hawk, HAWK_T("\'")); break; } @@ -341,23 +341,23 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) hawk_bch_t tmp = ((hawk_nde_bchr_t*)nde)->val; hawk_ooch_t buf[16]; - PUT_SRCSTR (hawk, HAWK_T("@b\'")); + PUT_SRCSTR(hawk, HAWK_T("@b\'")); if (tmp == '\0') - PUT_SRCSTR (hawk, HAWK_T("\\0")); + PUT_SRCSTR(hawk, HAWK_T("\\0")); else if (tmp == '\'') - PUT_SRCSTR (hawk, HAWK_T("\\'")); + PUT_SRCSTR(hawk, HAWK_T("\\'")); else if (hawk_is_bch_print(tmp)) { hawk_ooch_t oc = (hawk_bchu_t)tmp; - PUT_SRCSTRN (hawk, &oc, 1); + PUT_SRCSTRN(hawk, &oc, 1); } else { - hawk_fmttooocstr (hawk, buf, HAWK_COUNTOF(buf), HAWK_T("\\x%02x"), (hawk_bchu_t)tmp); - PUT_SRCSTR (hawk, buf); + hawk_fmttooocstr(hawk, buf, HAWK_COUNTOF(buf), HAWK_T("\\x%02x"), (hawk_bchu_t)tmp); + PUT_SRCSTR(hawk, buf); } - PUT_SRCSTR (hawk, HAWK_T("\'")); + PUT_SRCSTR(hawk, HAWK_T("\'")); break; } @@ -365,7 +365,7 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { if (((hawk_nde_int_t*)nde)->str) { - PUT_SRCSTRN (hawk, ((hawk_nde_int_t*)nde)->str, ((hawk_nde_int_t*)nde)->len); + PUT_SRCSTRN(hawk, ((hawk_nde_int_t*)nde)->str, ((hawk_nde_int_t*)nde)->len); } else { @@ -389,7 +389,7 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) HAWK_T('\0'), HAWK_NULL ); - PUT_SRCSTR (hawk, buf); + PUT_SRCSTR(hawk, buf); } break; } @@ -398,19 +398,19 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { if (((hawk_nde_flt_t*)nde)->str) { - PUT_SRCSTRN (hawk, ((hawk_nde_flt_t*)nde)->str, ((hawk_nde_flt_t*)nde)->len); + PUT_SRCSTRN(hawk, ((hawk_nde_flt_t*)nde)->str, ((hawk_nde_flt_t*)nde)->len); } else { hawk_ooch_t buf[96]; #if defined(HAWK_USE_FLTMAX) - /*hawk_fmttooocstr (hawk, buf, HAWK_COUNTOF(buf), HAWK_T("%jf"), ((hawk_nde_flt_t*)nde)->val);*/ - hawk_fmttooocstr (hawk, buf, HAWK_COUNTOF(buf), HAWK_T("%jjf"), &((hawk_nde_flt_t*)nde)->val); + /*hawk_fmttooocstr(hawk, buf, HAWK_COUNTOF(buf), HAWK_T("%jf"), ((hawk_nde_flt_t*)nde)->val);*/ + hawk_fmttooocstr(hawk, buf, HAWK_COUNTOF(buf), HAWK_T("%jjf"), &((hawk_nde_flt_t*)nde)->val); #else - hawk_fmttooocstr (hawk, buf, HAWK_COUNTOF(buf), HAWK_T("%zf"), ((hawk_nde_flt_t*)nde)->val); + hawk_fmttooocstr(hawk, buf, HAWK_COUNTOF(buf), HAWK_T("%zf"), ((hawk_nde_flt_t*)nde)->val); #endif - PUT_SRCSTR (hawk, buf); + PUT_SRCSTR(hawk, buf); } break; } @@ -420,7 +420,7 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) hawk_ooch_t* ptr; hawk_oow_t len, i; - PUT_SRCSTR (hawk, HAWK_T("\"")); + PUT_SRCSTR(hawk, HAWK_T("\"")); ptr = ((hawk_nde_str_t*)nde)->ptr; len = ((hawk_nde_str_t*)nde)->len; @@ -430,41 +430,41 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) switch (ptr[i]) { case HAWK_T('\n'): - PUT_SRCSTR (hawk, HAWK_T("\\n")); + PUT_SRCSTR(hawk, HAWK_T("\\n")); break; case HAWK_T('\r'): - PUT_SRCSTR (hawk, HAWK_T("\\r")); + PUT_SRCSTR(hawk, HAWK_T("\\r")); break; case HAWK_T('\t'): - PUT_SRCSTR (hawk, HAWK_T("\\t")); + PUT_SRCSTR(hawk, HAWK_T("\\t")); break; case HAWK_T('\f'): - PUT_SRCSTR (hawk, HAWK_T("\\f")); + PUT_SRCSTR(hawk, HAWK_T("\\f")); break; case HAWK_T('\b'): - PUT_SRCSTR (hawk, HAWK_T("\\b")); + PUT_SRCSTR(hawk, HAWK_T("\\b")); break; case HAWK_T('\v'): - PUT_SRCSTR (hawk, HAWK_T("\\v")); + PUT_SRCSTR(hawk, HAWK_T("\\v")); break; case HAWK_T('\a'): - PUT_SRCSTR (hawk, HAWK_T("\\a")); + PUT_SRCSTR(hawk, HAWK_T("\\a")); break; case HAWK_T('\0'): - PUT_SRCSTR (hawk, HAWK_T("\\0")); + PUT_SRCSTR(hawk, HAWK_T("\\0")); break; case HAWK_T('\"'): - PUT_SRCSTR (hawk, HAWK_T("\\\"")); + PUT_SRCSTR(hawk, HAWK_T("\\\"")); break; case HAWK_T('\\'): - PUT_SRCSTR (hawk, HAWK_T("\\\\")); + PUT_SRCSTR(hawk, HAWK_T("\\\\")); break; default: - PUT_SRCSTRN (hawk, &ptr[i], 1); + PUT_SRCSTRN(hawk, &ptr[i], 1); break; } } - PUT_SRCSTR (hawk, HAWK_T("\"")); + PUT_SRCSTR(hawk, HAWK_T("\"")); break; } @@ -473,7 +473,7 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) hawk_bch_t* ptr; hawk_oow_t len, i; - PUT_SRCSTR (hawk, HAWK_T("@b\"")); + PUT_SRCSTR(hawk, HAWK_T("@b\"")); ptr = ((hawk_nde_mbs_t*)nde)->ptr; len = ((hawk_nde_mbs_t*)nde)->len; for (i = 0; i < len; i++) @@ -482,101 +482,101 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) switch (ptr[i]) { case HAWK_BT('\n'): - PUT_SRCSTR (hawk, HAWK_T("\\n")); + PUT_SRCSTR(hawk, HAWK_T("\\n")); break; case HAWK_BT('\r'): - PUT_SRCSTR (hawk, HAWK_T("\\r")); + PUT_SRCSTR(hawk, HAWK_T("\\r")); break; case HAWK_BT('\t'): - PUT_SRCSTR (hawk, HAWK_T("\\t")); + PUT_SRCSTR(hawk, HAWK_T("\\t")); break; case HAWK_BT('\f'): - PUT_SRCSTR (hawk, HAWK_T("\\f")); + PUT_SRCSTR(hawk, HAWK_T("\\f")); break; case HAWK_BT('\b'): - PUT_SRCSTR (hawk, HAWK_T("\\b")); + PUT_SRCSTR(hawk, HAWK_T("\\b")); break; case HAWK_BT('\v'): - PUT_SRCSTR (hawk, HAWK_T("\\v")); + PUT_SRCSTR(hawk, HAWK_T("\\v")); break; case HAWK_BT('\a'): - PUT_SRCSTR (hawk, HAWK_T("\\a")); + PUT_SRCSTR(hawk, HAWK_T("\\a")); break; case HAWK_BT('\0'): - PUT_SRCSTR (hawk, HAWK_T("\\0")); + PUT_SRCSTR(hawk, HAWK_T("\\0")); break; case HAWK_BT('\"'): - PUT_SRCSTR (hawk, HAWK_T("\\\"")); + PUT_SRCSTR(hawk, HAWK_T("\\\"")); break; case HAWK_BT('\\'): - PUT_SRCSTR (hawk, HAWK_T("\\\\")); + PUT_SRCSTR(hawk, HAWK_T("\\\\")); break; default: { #if defined(HAWK_OOCH_IS_BCH) - PUT_SRCSTRN (hawk, &ptr[i], 1); + PUT_SRCSTRN(hawk, &ptr[i], 1); #else hawk_ooch_t oc = (hawk_bchu_t)ptr[i]; if (HAWK_BYTE_PRINTABLE(oc)) { - PUT_SRCSTRN (hawk, &oc, 1); + PUT_SRCSTRN(hawk, &oc, 1); } else { hawk_bch_t xbuf[3]; hawk_byte_to_bcstr (oc, xbuf, HAWK_COUNTOF(xbuf), 16, '0'); - PUT_SRCSTR (hawk, HAWK_T("\\x")); - oc = (hawk_bchu_t)xbuf[0]; PUT_SRCSTRN (hawk, &oc, 1); - oc = (hawk_bchu_t)xbuf[1]; PUT_SRCSTRN (hawk, &oc, 1); + PUT_SRCSTR(hawk, HAWK_T("\\x")); + oc = (hawk_bchu_t)xbuf[0]; PUT_SRCSTRN(hawk, &oc, 1); + oc = (hawk_bchu_t)xbuf[1]; PUT_SRCSTRN(hawk, &oc, 1); } #endif break; } } } - PUT_SRCSTR (hawk, HAWK_T("\"")); + PUT_SRCSTR(hawk, HAWK_T("\"")); break; } case HAWK_NDE_REX: { - PUT_SRCSTR (hawk, HAWK_T("/")); - PUT_SRCSTRN (hawk, + PUT_SRCSTR(hawk, HAWK_T("/")); + PUT_SRCSTRN(hawk, ((hawk_nde_rex_t*)nde)->str.ptr, ((hawk_nde_rex_t*)nde)->str.len); - PUT_SRCSTR (hawk, HAWK_T("/")); + PUT_SRCSTR(hawk, HAWK_T("/")); break; } case HAWK_NDE_XNIL: { - PUT_SRCSTR (hawk, HAWK_T("@nil")); + PUT_SRCSTR(hawk, HAWK_T("@nil")); break; } case HAWK_NDE_XARGC: { - PUT_SRCSTR (hawk, HAWK_T("@argc")); + PUT_SRCSTR(hawk, HAWK_T("@argc")); break; } case HAWK_NDE_XARGV: { - PUT_SRCSTR (hawk, HAWK_T("@argv")); + PUT_SRCSTR(hawk, HAWK_T("@argv")); break; } case HAWK_NDE_XARGVIDX: { - PUT_SRCSTR (hawk, HAWK_T("@argv[")); - PRINT_EXPR (hawk, ((hawk_nde_xargvidx_t*)nde)->pos); - PUT_SRCSTR (hawk, HAWK_T("]")); + PUT_SRCSTR(hawk, HAWK_T("@argv[")); + PRINT_EXPR(hawk, ((hawk_nde_xargvidx_t*)nde)->pos); + PUT_SRCSTR(hawk, HAWK_T("]")); break; } case HAWK_NDE_FUN: { - PUT_SRCSTRN (hawk, + PUT_SRCSTRN(hawk, ((hawk_nde_fun_t*)nde)->name.ptr, ((hawk_nde_fun_t*)nde)->name.len); break; @@ -591,8 +591,8 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) n = hawk_int_to_oocstr(px->id.idxa, 10, HAWK_NULL, tmp, HAWK_COUNTOF(tmp)); - PUT_SRCSTR (hawk, HAWK_T("__p")); - PUT_SRCSTRN (hawk, tmp, n); + PUT_SRCSTR(hawk, HAWK_T("__p")); + PUT_SRCSTRN(hawk, tmp, n); HAWK_ASSERT (px->idx == HAWK_NULL); break; @@ -605,10 +605,10 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) HAWK_ASSERT (px->id.idxa != (hawk_oow_t)-1); HAWK_ASSERT (px->idx != HAWK_NULL); - PUT_SRCSTR (hawk, HAWK_T("__p")); + PUT_SRCSTR(hawk, HAWK_T("__p")); n = hawk_int_to_oocstr(px->id.idxa, 10, HAWK_NULL, hawk->tmp.fmt, HAWK_COUNTOF(hawk->tmp.fmt)); - PUT_SRCSTRN (hawk, hawk->tmp.fmt, n); - PRINT_EXPR_LIST_FOR_IDX (hawk, px->idx); + PUT_SRCSTRN(hawk, hawk->tmp.fmt, n); + PRINT_EXPR_LIST_FOR_IDX(hawk, px->idx); break; } @@ -618,7 +618,7 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) HAWK_ASSERT (px->id.idxa == (hawk_oow_t)-1); HAWK_ASSERT (px->idx == HAWK_NULL); - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); break; } @@ -628,8 +628,8 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) HAWK_ASSERT (px->id.idxa == (hawk_oow_t)-1); HAWK_ASSERT (px->idx != HAWK_NULL); - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); - PRINT_EXPR_LIST_FOR_IDX (hawk, px->idx); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); + PRINT_EXPR_LIST_FOR_IDX(hawk, px->idx); break; } @@ -645,26 +645,26 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { /* no implicit(named) variable is allowed. * use the actual name */ - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); } else if (px->id.idxa < hawk->tree.ngbls_base) { /* static global variables */ - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); } else { hawk_ooch_t tmp[HAWK_SIZEOF(hawk_int_t)*8+2]; hawk_oow_t n; - PUT_SRCSTR (hawk, HAWK_T("__g")); + PUT_SRCSTR(hawk, HAWK_T("__g")); n = hawk_int_to_oocstr(px->id.idxa, 10, HAWK_NULL, tmp, HAWK_COUNTOF(tmp)); - PUT_SRCSTRN (hawk, tmp, n); + PUT_SRCSTRN(hawk, tmp, n); } } else { - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); } HAWK_ASSERT (px->idx == HAWK_NULL); break; @@ -682,29 +682,29 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { /* no implicit(named) variable is allowed. * use the actual name */ - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); } else if (px->id.idxa < hawk->tree.ngbls_base) { /* static global variables */ - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); } else { hawk_ooch_t tmp[HAWK_SIZEOF(hawk_int_t)*8+2]; hawk_oow_t n; - PUT_SRCSTR (hawk, HAWK_T("__g")); + PUT_SRCSTR(hawk, HAWK_T("__g")); n = hawk_int_to_oocstr(px->id.idxa, 10, HAWK_NULL, tmp, HAWK_COUNTOF(tmp)); - PUT_SRCSTRN (hawk, tmp, n); + PUT_SRCSTRN(hawk, tmp, n); } } else { - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); } HAWK_ASSERT (px->idx != HAWK_NULL); - PRINT_EXPR_LIST_FOR_IDX (hawk, px->idx); + PRINT_EXPR_LIST_FOR_IDX(hawk, px->idx); break; } @@ -716,13 +716,13 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) if (px->id.idxa != (hawk_oow_t)-1) { - PUT_SRCSTR (hawk, HAWK_T("__l")); + PUT_SRCSTR(hawk, HAWK_T("__l")); n = hawk_int_to_oocstr(px->id.idxa, 10, HAWK_NULL, hawk->tmp.fmt, HAWK_COUNTOF(hawk->tmp.fmt)); - PUT_SRCSTRN (hawk, hawk->tmp.fmt, n); + PUT_SRCSTRN(hawk, hawk->tmp.fmt, n); } else { - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); } HAWK_ASSERT (px->idx == HAWK_NULL); break; @@ -735,54 +735,54 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) if (px->id.idxa != (hawk_oow_t)-1) { - PUT_SRCSTR (hawk, HAWK_T("__l")); + PUT_SRCSTR(hawk, HAWK_T("__l")); n = hawk_int_to_oocstr(px->id.idxa, 10, HAWK_NULL, hawk->tmp.fmt, HAWK_COUNTOF(hawk->tmp.fmt)); - PUT_SRCSTRN (hawk, hawk->tmp.fmt, n); + PUT_SRCSTRN(hawk, hawk->tmp.fmt, n); } else { - PUT_SRCSTRN (hawk, px->id.name.ptr, px->id.name.len); + PUT_SRCSTRN(hawk, px->id.name.ptr, px->id.name.len); } HAWK_ASSERT (px->idx != HAWK_NULL); - PRINT_EXPR_LIST_FOR_IDX (hawk, px->idx); + PRINT_EXPR_LIST_FOR_IDX(hawk, px->idx); break; } case HAWK_NDE_POS: { - PUT_SRCSTR (hawk, HAWK_T("$(")); - PRINT_EXPR (hawk, ((hawk_nde_pos_t*)nde)->val); - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, HAWK_T("$(")); + PRINT_EXPR(hawk, ((hawk_nde_pos_t*)nde)->val); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } case HAWK_NDE_FNCALL_FNC: { hawk_nde_fncall_t* px = (hawk_nde_fncall_t*)nde; - PUT_SRCSTRN (hawk, px->u.fnc.info.name.ptr, px->u.fnc.info.name.len); - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR_LIST (hawk, px->args); - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTRN(hawk, px->u.fnc.info.name.ptr, px->u.fnc.info.name.len); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR_LIST(hawk, px->args); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } case HAWK_NDE_FNCALL_FUN: { hawk_nde_fncall_t* px = (hawk_nde_fncall_t*)nde; - PUT_SRCSTRN (hawk, px->u.fun.name.ptr, px->u.fun.name.len); - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR_LIST (hawk, px->args); - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTRN(hawk, px->u.fun.name.ptr, px->u.fun.name.len); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR_LIST(hawk, px->args); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } case HAWK_NDE_FNCALL_VAR: { hawk_nde_fncall_t* px = (hawk_nde_fncall_t*)nde; - PRINT_EXPR (hawk, (hawk_nde_t*)px->u.var.var); - PUT_SRCSTR (hawk, HAWK_T("(")); - PRINT_EXPR_LIST (hawk, px->args); - PUT_SRCSTR (hawk, HAWK_T(")")); + PRINT_EXPR(hawk, (hawk_nde_t*)px->u.var.var); + PUT_SRCSTR(hawk, HAWK_T("(")); + PRINT_EXPR_LIST(hawk, px->args); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } @@ -790,48 +790,48 @@ static int print_expr (hawk_t* hawk, hawk_nde_t* nde) { hawk_nde_getline_t* px = (hawk_nde_getline_t*)nde; - PUT_SRCSTR (hawk, HAWK_T("(")); + PUT_SRCSTR(hawk, HAWK_T("(")); if (px->in && (px->in_type == HAWK_IN_PIPE || px->in_type == HAWK_IN_RWPIPE)) { - PRINT_EXPR (hawk, px->in); - PUT_SRCSTR (hawk, HAWK_T(" ")); - PUT_SRCSTR (hawk, getline_inop_str[px->in_type]); - PUT_SRCSTR (hawk, HAWK_T(" ")); + PRINT_EXPR(hawk, px->in); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PUT_SRCSTR(hawk, getline_inop_str[px->in_type]); + PUT_SRCSTR(hawk, HAWK_T(" ")); } - hawk_getkwname (hawk, (px->mbs? HAWK_KWID_GETBLINE: HAWK_KWID_GETLINE), &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); + hawk_getkwname(hawk, (px->mbs? HAWK_KWID_GETBLINE: HAWK_KWID_GETLINE), &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); if (px->var) { - PUT_SRCSTR (hawk, HAWK_T(" ")); - PRINT_EXPR (hawk, px->var); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PRINT_EXPR(hawk, px->var); } if (px->in && px->in_type == HAWK_IN_FILE) { - PUT_SRCSTR (hawk, HAWK_T(" ")); - PUT_SRCSTR (hawk, getline_inop_str[px->in_type]); - PUT_SRCSTR (hawk, HAWK_T(" ")); - PRINT_EXPR (hawk, px->in); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PUT_SRCSTR(hawk, getline_inop_str[px->in_type]); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PRINT_EXPR(hawk, px->in); } - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } case HAWK_NDE_PRINT: case HAWK_NDE_PRINTF: { - PUT_SRCSTR (hawk, HAWK_T("(")); + PUT_SRCSTR(hawk, HAWK_T("(")); if (print_printx(hawk, (hawk_nde_print_t*)nde) <= -1) return -1; - PUT_SRCSTR (hawk, HAWK_T(")")); + PUT_SRCSTR(hawk, HAWK_T(")")); break; } default: { - hawk_seterrnum (hawk, HAWK_NULL, HAWK_EINTERN); + hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINTERN); return -1; } } @@ -845,9 +845,9 @@ static int print_expr_list (hawk_t* hawk, hawk_nde_t* tree) while (p) { - PRINT_EXPR (hawk, p); + PRINT_EXPR(hawk, p); p = p->next; - if (p) PUT_SRCSTR (hawk, HAWK_T(",")); + if (p) PUT_SRCSTR(hawk, HAWK_T(",")); } return 0; @@ -857,10 +857,10 @@ static int print_expr_list_for_idx (hawk_t* hawk, hawk_nde_t* tree) { hawk_nde_t* p = tree; - PUT_SRCSTR (hawk, HAWK_T("[")); + PUT_SRCSTR(hawk, HAWK_T("[")); while (p) { - PRINT_EXPR (hawk, p); + PRINT_EXPR(hawk, p); p = p->next; if (p) { @@ -870,13 +870,13 @@ static int print_expr_list_for_idx (hawk_t* hawk, hawk_nde_t* tree) * if the true multi-dimensional indices are enabled(i.e. HAWK_ENABLE_GC is defined) * e.g. a[x][y][z] * let me print this regardless of */ - PUT_SRCSTR (hawk, HAWK_T("][")); + PUT_SRCSTR(hawk, HAWK_T("][")); p = p->next; } - else PUT_SRCSTR (hawk, HAWK_T(",")); + else PUT_SRCSTR(hawk, HAWK_T(",")); } } - PUT_SRCSTR (hawk, HAWK_T("]")); + PUT_SRCSTR(hawk, HAWK_T("]")); return 0; } @@ -890,9 +890,9 @@ static int print_stmt (hawk_t* hawk, hawk_nde_t* p, int depth) { case HAWK_NDE_NULL: { - PRINT_TABS (hawk, depth); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); break; } @@ -901,39 +901,39 @@ static int print_stmt (hawk_t* hawk, hawk_nde_t* p, int depth) hawk_oow_t n; hawk_nde_blk_t* px = (hawk_nde_blk_t*)p; - PRINT_TABS (hawk, depth); - PUT_SRCSTR (hawk, HAWK_T("{")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + PUT_SRCSTR(hawk, HAWK_T("{")); + PUT_NL(hawk); if (px->org_nlcls > 0) { - PRINT_TABS (hawk, depth + 1); + PRINT_TABS(hawk, depth + 1); - hawk_getkwname (hawk, HAWK_KWID_XLOCAL, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" ")); + hawk_getkwname(hawk, HAWK_KWID_XLOCAL, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" ")); /* though the parser pushed up all local variables to the outer-most level, * the code here restores the original declarations with org_nlcls and prv_nlcls */ for (i = 0; i < px->org_nlcls - 1; i++) { - PUT_SRCSTR (hawk, HAWK_T("__l")); + PUT_SRCSTR(hawk, HAWK_T("__l")); n = hawk_int_to_oocstr(px->outer_nlcls + i, 10, HAWK_NULL, hawk->tmp.fmt, HAWK_COUNTOF(hawk->tmp.fmt)); - PUT_SRCSTRN (hawk, hawk->tmp.fmt, n); - PUT_SRCSTR (hawk, HAWK_T(", ")); + PUT_SRCSTRN(hawk, hawk->tmp.fmt, n); + PUT_SRCSTR(hawk, HAWK_T(", ")); } - PUT_SRCSTR (hawk, HAWK_T("__l")); + PUT_SRCSTR(hawk, HAWK_T("__l")); n = hawk_int_to_oocstr(px->outer_nlcls + i, 10, HAWK_NULL, hawk->tmp.fmt, HAWK_COUNTOF(hawk->tmp.fmt)); - PUT_SRCSTRN (hawk, hawk->tmp.fmt, n); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PUT_SRCSTRN(hawk, hawk->tmp.fmt, n); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); } - PRINT_STMTS (hawk, px->body, depth + 1); - PRINT_TABS (hawk, depth); - PUT_SRCSTR (hawk, HAWK_T("}")); - PUT_NL (hawk); + PRINT_STMTS(hawk, px->body, depth + 1); + PRINT_TABS(hawk, depth); + PUT_SRCSTR(hawk, HAWK_T("}")); + PUT_NL(hawk); break; } @@ -941,53 +941,97 @@ static int print_stmt (hawk_t* hawk, hawk_nde_t* p, int depth) { hawk_nde_if_t* px = (hawk_nde_if_t*)p; - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_IF, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" (")); - PRINT_EXPR (hawk, px->test); - PUT_SRCSTR (hawk, HAWK_T(")")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_IF, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" (")); + PRINT_EXPR(hawk, px->test); + PUT_SRCSTR(hawk, HAWK_T(")")); + PUT_NL(hawk); HAWK_ASSERT (px->then_part != HAWK_NULL); if (px->then_part->type == HAWK_NDE_BLK) - PRINT_STMTS (hawk, px->then_part, depth); + PRINT_STMTS(hawk, px->then_part, depth); else - PRINT_STMTS (hawk, px->then_part, depth + 1); + PRINT_STMTS(hawk, px->then_part, depth + 1); if (px->else_part != HAWK_NULL) { - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_ELSE, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_ELSE, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_NL(hawk); if (px->else_part->type == HAWK_NDE_BLK) - PRINT_STMTS (hawk, px->else_part, depth); + PRINT_STMTS(hawk, px->else_part, depth); else - PRINT_STMTS (hawk, px->else_part, depth + 1); + PRINT_STMTS(hawk, px->else_part, depth + 1); } break; } + case HAWK_NDE_SWITCH: + { + hawk_nde_switch_t* px = (hawk_nde_switch_t*)p; + + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_SWITCH, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" (")); + PRINT_EXPR(hawk, px->test); + PUT_SRCSTR(hawk, HAWK_T(")")); + PUT_NL(hawk); + PRINT_TABS(hawk, depth); + PUT_SRCSTR(hawk, HAWK_T("{")); + PUT_NL(hawk); + if (px->case_part) PRINT_STMTS(hawk, px->case_part, depth); + /* default_part is one of the case_parts. no explicit printing is needed */ + /*if (px->default_part) PRINT_STMTS(hawk, px->default_part, depth);*/ + PUT_NL(hawk); + PRINT_TABS(hawk, depth); + PUT_SRCSTR(hawk, HAWK_T("}")); + PUT_NL(hawk); + break; + } + + case HAWK_NDE_CASE: + { + /* this is not a real statement and is subject to the owning switch statement. */ + hawk_nde_case_t* px = (hawk_nde_case_t*)p; + + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, (px->val? HAWK_KWID_CASE: HAWK_KWID_DEFAULT), &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + if (px->val) + { + PUT_SRCSTR(hawk, HAWK_T(" ")); + PRINT_EXPR(hawk, px->val); + } + PUT_SRCSTR(hawk, HAWK_T(":")); + PUT_NL(hawk); + if (px->action) PRINT_STMTS(hawk, px->action, depth + 1); + break; + } + case HAWK_NDE_WHILE: { hawk_nde_while_t* px = (hawk_nde_while_t*)p; - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_WHILE, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" (")); - PRINT_EXPR (hawk, px->test); - PUT_SRCSTR (hawk, HAWK_T(")")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_WHILE, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" (")); + PRINT_EXPR(hawk, px->test); + PUT_SRCSTR(hawk, HAWK_T(")")); + PUT_NL(hawk); if (px->body->type == HAWK_NDE_BLK) { - PRINT_STMTS (hawk, px->body, depth); + PRINT_STMTS(hawk, px->body, depth); } else { - PRINT_STMTS (hawk, px->body, depth + 1); + PRINT_STMTS(hawk, px->body, depth + 1); } + PUT_NL(hawk); break; } @@ -995,26 +1039,26 @@ static int print_stmt (hawk_t* hawk, hawk_nde_t* p, int depth) { hawk_nde_while_t* px = (hawk_nde_while_t*)p; - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_DO, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_DO, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_NL(hawk); if (px->body->type == HAWK_NDE_BLK) { - PRINT_STMTS (hawk, px->body, depth); + PRINT_STMTS(hawk, px->body, depth); } else { - PRINT_STMTS (hawk, px->body, depth + 1); + PRINT_STMTS(hawk, px->body, depth + 1); } - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_WHILE, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" (")); - PRINT_EXPR (hawk, px->test); - PUT_SRCSTR (hawk, HAWK_T(");")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_WHILE, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" (")); + PRINT_EXPR(hawk, px->test); + PUT_SRCSTR(hawk, HAWK_T(");")); + PUT_NL(hawk); break; } @@ -1022,34 +1066,34 @@ static int print_stmt (hawk_t* hawk, hawk_nde_t* p, int depth) { hawk_nde_for_t* px = (hawk_nde_for_t*)p; - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_FOR, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" (")); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_FOR, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" (")); if (px->init != HAWK_NULL) { - PRINT_EXPR (hawk, px->init); + PRINT_EXPR(hawk, px->init); } - PUT_SRCSTR (hawk, HAWK_T("; ")); + PUT_SRCSTR(hawk, HAWK_T("; ")); if (px->test != HAWK_NULL) { - PRINT_EXPR (hawk, px->test); + PRINT_EXPR(hawk, px->test); } - PUT_SRCSTR (hawk, HAWK_T("; ")); + PUT_SRCSTR(hawk, HAWK_T("; ")); if (px->incr != HAWK_NULL) { - PRINT_EXPR (hawk, px->incr); + PRINT_EXPR(hawk, px->incr); } - PUT_SRCSTR (hawk, HAWK_T(")")); - PUT_NL (hawk); + PUT_SRCSTR(hawk, HAWK_T(")")); + PUT_NL(hawk); if (px->body->type == HAWK_NDE_BLK) { - PRINT_STMTS (hawk, px->body, depth); + PRINT_STMTS(hawk, px->body, depth); } else { - PRINT_STMTS (hawk, px->body, depth + 1); + PRINT_STMTS(hawk, px->body, depth + 1); } break; } @@ -1058,63 +1102,63 @@ static int print_stmt (hawk_t* hawk, hawk_nde_t* p, int depth) { hawk_nde_forin_t* px = (hawk_nde_forin_t*)p; - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_FOR, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" ")); - PRINT_EXPR (hawk, px->test); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_FOR, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" ")); + PRINT_EXPR(hawk, px->test); + PUT_NL(hawk); if (px->body->type == HAWK_NDE_BLK) { - PRINT_STMTS (hawk, px->body, depth); + PRINT_STMTS(hawk, px->body, depth); } else { - PRINT_STMTS (hawk, px->body, depth + 1); + PRINT_STMTS(hawk, px->body, depth + 1); } break; } case HAWK_NDE_BREAK: { - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_BREAK, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_BREAK, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); break; } case HAWK_NDE_CONTINUE: { - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_CONTINUE, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_CONTINUE, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); break; } case HAWK_NDE_RETURN: { - PRINT_TABS (hawk, depth); + PRINT_TABS(hawk, depth); if (((hawk_nde_return_t*)p)->val == HAWK_NULL) { - hawk_getkwname (hawk, HAWK_KWID_RETURN, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + hawk_getkwname(hawk, HAWK_KWID_RETURN, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); } else { - hawk_getkwname (hawk, HAWK_KWID_RETURN, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" ")); + hawk_getkwname(hawk, HAWK_KWID_RETURN, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" ")); HAWK_ASSERT (((hawk_nde_return_t*)p)->val->next == HAWK_NULL); - PRINT_EXPR (hawk, ((hawk_nde_return_t*)p)->val); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PRINT_EXPR(hawk, ((hawk_nde_return_t*)p)->val); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); } break; } @@ -1122,92 +1166,92 @@ static int print_stmt (hawk_t* hawk, hawk_nde_t* p, int depth) case HAWK_NDE_EXIT: { hawk_nde_exit_t* px = (hawk_nde_exit_t*)p; - PRINT_TABS (hawk, depth); + PRINT_TABS(hawk, depth); if (px->val == HAWK_NULL) { - hawk_getkwname (hawk, (px->abort? HAWK_KWID_XABORT: HAWK_KWID_EXIT), &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + hawk_getkwname(hawk, (px->abort? HAWK_KWID_XABORT: HAWK_KWID_EXIT), &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); } else { - hawk_getkwname (hawk, (px->abort? HAWK_KWID_XABORT: HAWK_KWID_EXIT), &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" ")); + hawk_getkwname(hawk, (px->abort? HAWK_KWID_XABORT: HAWK_KWID_EXIT), &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" ")); HAWK_ASSERT (px->val->next == HAWK_NULL); - PRINT_EXPR (hawk, px->val); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PRINT_EXPR(hawk, px->val); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); } break; } case HAWK_NDE_NEXT: { - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_NEXT, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_NEXT, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); break; } case HAWK_NDE_NEXTFILE: { - PRINT_TABS (hawk, depth); + PRINT_TABS(hawk, depth); if (((hawk_nde_nextfile_t*)p)->out) { - hawk_getkwname (hawk, HAWK_KWID_NEXTOFILE, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); + hawk_getkwname(hawk, HAWK_KWID_NEXTOFILE, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); } else { - hawk_getkwname (hawk, HAWK_KWID_NEXTFILE, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); + hawk_getkwname(hawk, HAWK_KWID_NEXTFILE, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); } - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); break; } case HAWK_NDE_DELETE: { - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_DELETE, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" ")); - hawk_prnpt (hawk, ((hawk_nde_delete_t*)p)->var); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_DELETE, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" ")); + hawk_prnpt(hawk, ((hawk_nde_delete_t*)p)->var); break; } case HAWK_NDE_RESET: { - PRINT_TABS (hawk, depth); - hawk_getkwname (hawk, HAWK_KWID_XRESET, &kw); - PUT_SRCSTRN (hawk, kw.ptr, kw.len); - PUT_SRCSTR (hawk, HAWK_T(" ")); - hawk_prnpt (hawk, ((hawk_nde_reset_t*)p)->var); + PRINT_TABS(hawk, depth); + hawk_getkwname(hawk, HAWK_KWID_XRESET, &kw); + PUT_SRCSTRN(hawk, kw.ptr, kw.len); + PUT_SRCSTR(hawk, HAWK_T(" ")); + hawk_prnpt(hawk, ((hawk_nde_reset_t*)p)->var); break; } case HAWK_NDE_PRINT: case HAWK_NDE_PRINTF: { - PRINT_TABS (hawk, depth); - if (print_printx (hawk, (hawk_nde_print_t*)p) <= -1) return -1; - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + if (print_printx(hawk, (hawk_nde_print_t*)p) <= -1) return -1; + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); break; } default: { - PRINT_TABS (hawk, depth); - PRINT_EXPR (hawk, p); - PUT_SRCSTR (hawk, HAWK_T(";")); - PUT_NL (hawk); + PRINT_TABS(hawk, depth); + PRINT_EXPR(hawk, p); + PUT_SRCSTR(hawk, HAWK_T(";")); + PUT_NL(hawk); break; } } @@ -1247,7 +1291,7 @@ int hawk_prnptnpt (hawk_t* hawk, hawk_nde_t* tree) if (print_expr(hawk, nde) <= -1) return -1; if (!nde->next) break; - PUT_SRCSTR (hawk, HAWK_T(",")); + PUT_SRCSTR(hawk, HAWK_T(",")); nde = nde->next; } @@ -1267,101 +1311,121 @@ void hawk_clrpt (hawk_t* hawk, hawk_nde_t* tree) { case HAWK_NDE_NULL: { - hawk_freemem (hawk, p); + hawk_freemem(hawk, p); break; } case HAWK_NDE_BLK: { - hawk_clrpt (hawk, ((hawk_nde_blk_t*)p)->body); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_blk_t*)p)->body); + hawk_freemem(hawk, p); break; } case HAWK_NDE_IF: { hawk_nde_if_t* px = (hawk_nde_if_t*)p; - hawk_clrpt (hawk, px->test); - hawk_clrpt (hawk, px->then_part); - if (px->else_part) hawk_clrpt (hawk, px->else_part); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, px->test); + hawk_clrpt(hawk, px->then_part); + if (px->else_part) hawk_clrpt(hawk, px->else_part); + hawk_freemem(hawk, p); + break; + } + + case HAWK_NDE_SWITCH: + { + hawk_nde_switch_t* px = (hawk_nde_switch_t*)p; + hawk_clrpt(hawk, px->test); + if (px->case_part) hawk_clrpt(hawk, px->case_part); + /* px->default_part is one of the case parts. explicit clean up isn't required */ + /*if (px->default_part) hawk_clrpt(hawk, px->default_part);*/ + hawk_freemem(hawk, p); + break; + } + + case HAWK_NDE_CASE: + { + hawk_nde_case_t* px = (hawk_nde_case_t*)p; + if (px->val) hawk_clrpt(hawk, px->val); + if (px->action) hawk_clrpt(hawk, px->action); + hawk_freemem(hawk, p); break; } case HAWK_NDE_WHILE: case HAWK_NDE_DOWHILE: { - hawk_clrpt (hawk, ((hawk_nde_while_t*)p)->test); - hawk_clrpt (hawk, ((hawk_nde_while_t*)p)->body); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_while_t*)p)->test); + hawk_clrpt(hawk, ((hawk_nde_while_t*)p)->body); + hawk_freemem(hawk, p); break; } case HAWK_NDE_FOR: { hawk_nde_for_t* px = (hawk_nde_for_t*)p; - if (px->init) hawk_clrpt (hawk, px->init); - if (px->test) hawk_clrpt (hawk, px->test); - if (px->incr) hawk_clrpt (hawk, px->incr); - hawk_clrpt (hawk, px->body); - hawk_freemem (hawk, p); + if (px->init) hawk_clrpt(hawk, px->init); + if (px->test) hawk_clrpt(hawk, px->test); + if (px->incr) hawk_clrpt(hawk, px->incr); + hawk_clrpt(hawk, px->body); + hawk_freemem(hawk, p); break; } case HAWK_NDE_FORIN: { - hawk_clrpt (hawk, ((hawk_nde_forin_t*)p)->test); - hawk_clrpt (hawk, ((hawk_nde_forin_t*)p)->body); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_forin_t*)p)->test); + hawk_clrpt(hawk, ((hawk_nde_forin_t*)p)->body); + hawk_freemem(hawk, p); break; } case HAWK_NDE_BREAK: { - hawk_freemem (hawk, p); + hawk_freemem(hawk, p); break; } case HAWK_NDE_CONTINUE: { - hawk_freemem (hawk, p); + hawk_freemem(hawk, p); break; } case HAWK_NDE_RETURN: { hawk_nde_return_t* px = (hawk_nde_return_t*)p; - if (px->val) hawk_clrpt (hawk, px->val); - hawk_freemem (hawk, p); + if (px->val) hawk_clrpt(hawk, px->val); + hawk_freemem(hawk, p); break; } case HAWK_NDE_EXIT: { if (((hawk_nde_exit_t*)p)->val != HAWK_NULL) - hawk_clrpt (hawk, ((hawk_nde_exit_t*)p)->val); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_exit_t*)p)->val); + hawk_freemem(hawk, p); break; } case HAWK_NDE_NEXT: case HAWK_NDE_NEXTFILE: { - hawk_freemem (hawk, p); + hawk_freemem(hawk, p); break; } case HAWK_NDE_DELETE: { - hawk_clrpt (hawk, ((hawk_nde_delete_t*)p)->var); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_delete_t*)p)->var); + hawk_freemem(hawk, p); break; } case HAWK_NDE_RESET: { - hawk_clrpt (hawk, ((hawk_nde_reset_t*)p)->var); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_reset_t*)p)->var); + hawk_freemem(hawk, p); break; } @@ -1369,24 +1433,24 @@ void hawk_clrpt (hawk_t* hawk, hawk_nde_t* tree) case HAWK_NDE_PRINTF: { hawk_nde_print_t* px = (hawk_nde_print_t*)p; - if (px->args) hawk_clrpt (hawk, px->args); - if (px->out) hawk_clrpt (hawk, px->out); - hawk_freemem (hawk, p); + if (px->args) hawk_clrpt(hawk, px->args); + if (px->out) hawk_clrpt(hawk, px->out); + hawk_freemem(hawk, p); break; } case HAWK_NDE_GRP: { - hawk_clrpt (hawk, ((hawk_nde_grp_t*)p)->body); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_grp_t*)p)->body); + hawk_freemem(hawk, p); break; } case HAWK_NDE_ASS: { - hawk_clrpt (hawk, ((hawk_nde_ass_t*)p)->left); - hawk_clrpt (hawk, ((hawk_nde_ass_t*)p)->right); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_ass_t*)p)->left); + hawk_clrpt(hawk, ((hawk_nde_ass_t*)p)->right); + hawk_freemem(hawk, p); break; } @@ -1396,9 +1460,9 @@ void hawk_clrpt (hawk_t* hawk, hawk_nde_t* tree) HAWK_ASSERT (px->left->next == HAWK_NULL); HAWK_ASSERT (px->right->next == HAWK_NULL); - hawk_clrpt (hawk, px->left); - hawk_clrpt (hawk, px->right); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, px->left); + hawk_clrpt(hawk, px->right); + hawk_freemem(hawk, p); break; } @@ -1408,90 +1472,90 @@ void hawk_clrpt (hawk_t* hawk, hawk_nde_t* tree) { hawk_nde_exp_t* px = (hawk_nde_exp_t*)p; HAWK_ASSERT (px->right == HAWK_NULL); - hawk_clrpt (hawk, px->left); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, px->left); + hawk_freemem(hawk, p); break; } case HAWK_NDE_CND: { - hawk_clrpt (hawk, ((hawk_nde_cnd_t*)p)->test); - hawk_clrpt (hawk, ((hawk_nde_cnd_t*)p)->left); - hawk_clrpt (hawk, ((hawk_nde_cnd_t*)p)->right); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_cnd_t*)p)->test); + hawk_clrpt(hawk, ((hawk_nde_cnd_t*)p)->left); + hawk_clrpt(hawk, ((hawk_nde_cnd_t*)p)->right); + hawk_freemem(hawk, p); break; } case HAWK_NDE_CHAR: case HAWK_NDE_BCHR: { - hawk_freemem (hawk, p); + hawk_freemem(hawk, p); break; } case HAWK_NDE_INT: { if (((hawk_nde_int_t*)p)->str) - hawk_freemem (hawk, ((hawk_nde_int_t*)p)->str); - hawk_freemem (hawk, p); + hawk_freemem(hawk, ((hawk_nde_int_t*)p)->str); + hawk_freemem(hawk, p); break; } case HAWK_NDE_FLT: { if (((hawk_nde_flt_t*)p)->str) - hawk_freemem (hawk, ((hawk_nde_flt_t*)p)->str); - hawk_freemem (hawk, p); + hawk_freemem(hawk, ((hawk_nde_flt_t*)p)->str); + hawk_freemem(hawk, p); break; } case HAWK_NDE_STR: { - hawk_freemem (hawk, ((hawk_nde_str_t*)p)->ptr); - hawk_freemem (hawk, p); + hawk_freemem(hawk, ((hawk_nde_str_t*)p)->ptr); + hawk_freemem(hawk, p); break; } case HAWK_NDE_MBS: { - hawk_freemem (hawk, ((hawk_nde_mbs_t*)p)->ptr); - hawk_freemem (hawk, p); + hawk_freemem(hawk, ((hawk_nde_mbs_t*)p)->ptr); + hawk_freemem(hawk, p); break; } case HAWK_NDE_REX: { hawk_nde_rex_t* rex = (hawk_nde_rex_t*)p; - hawk_freerex (hawk, rex->code[0], rex->code[1]); - hawk_freemem (hawk, ((hawk_nde_rex_t*)p)->str.ptr); - hawk_freemem (hawk, p); + hawk_freerex(hawk, rex->code[0], rex->code[1]); + hawk_freemem(hawk, ((hawk_nde_rex_t*)p)->str.ptr); + hawk_freemem(hawk, p); break; } case HAWK_NDE_XNIL: { - hawk_freemem (hawk, p); + hawk_freemem(hawk, p); break; } case HAWK_NDE_XARGC: case HAWK_NDE_XARGV: { - hawk_freemem (hawk, p); + hawk_freemem(hawk, p); break; } case HAWK_NDE_XARGVIDX: { - hawk_clrpt (hawk, ((hawk_nde_xargvidx_t*)p)->pos); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_xargvidx_t*)p)->pos); + hawk_freemem(hawk, p); break; } case HAWK_NDE_FUN: { - hawk_freemem (hawk, ((hawk_nde_fun_t*)p)->name.ptr); - hawk_freemem (hawk, p); + hawk_freemem(hawk, ((hawk_nde_fun_t*)p)->name.ptr); + hawk_freemem(hawk, p); break; } @@ -1502,8 +1566,8 @@ void hawk_clrpt (hawk_t* hawk, hawk_nde_t* tree) { hawk_nde_var_t* px = (hawk_nde_var_t*)p; HAWK_ASSERT (px->idx == HAWK_NULL); - if (px->id.name.ptr) hawk_freemem (hawk, px->id.name.ptr); - hawk_freemem (hawk, p); + if (px->id.name.ptr) hawk_freemem(hawk, px->id.name.ptr); + hawk_freemem(hawk, p); break; } @@ -1514,60 +1578,60 @@ void hawk_clrpt (hawk_t* hawk, hawk_nde_t* tree) { hawk_nde_var_t* px = (hawk_nde_var_t*)p; HAWK_ASSERT (px->idx != HAWK_NULL); - hawk_clrpt (hawk, px->idx); - if (px->id.name.ptr) hawk_freemem (hawk, px->id.name.ptr); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, px->idx); + if (px->id.name.ptr) hawk_freemem(hawk, px->id.name.ptr); + hawk_freemem(hawk, p); break; } case HAWK_NDE_POS: { - hawk_clrpt (hawk, ((hawk_nde_pos_t*)p)->val); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, ((hawk_nde_pos_t*)p)->val); + hawk_freemem(hawk, p); break; } case HAWK_NDE_FNCALL_FNC: { hawk_nde_fncall_t* px = (hawk_nde_fncall_t*)p; - /* hawk_freemem (hawk, px->u.fnc); */ - hawk_freemem (hawk, px->u.fnc.info.name.ptr); - hawk_clrpt (hawk, px->args); - hawk_freemem (hawk, p); + /* hawk_freemem(hawk, px->u.fnc); */ + hawk_freemem(hawk, px->u.fnc.info.name.ptr); + hawk_clrpt(hawk, px->args); + hawk_freemem(hawk, p); break; } case HAWK_NDE_FNCALL_FUN: { hawk_nde_fncall_t* px = (hawk_nde_fncall_t*)p; - hawk_freemem (hawk, px->u.fun.name.ptr); - hawk_clrpt (hawk, px->args); - hawk_freemem (hawk, p); + hawk_freemem(hawk, px->u.fun.name.ptr); + hawk_clrpt(hawk, px->args); + hawk_freemem(hawk, p); break; } case HAWK_NDE_FNCALL_VAR: { hawk_nde_fncall_t* px = (hawk_nde_fncall_t*)p; - hawk_clrpt (hawk, (hawk_nde_t*)px->u.var.var); - hawk_clrpt (hawk, px->args); - hawk_freemem (hawk, p); + hawk_clrpt(hawk, (hawk_nde_t*)px->u.var.var); + hawk_clrpt(hawk, px->args); + hawk_freemem(hawk, p); break; } case HAWK_NDE_GETLINE: { hawk_nde_getline_t* px = (hawk_nde_getline_t*)p; - if (px->var) hawk_clrpt (hawk, px->var); - if (px->in) hawk_clrpt (hawk, px->in); - hawk_freemem (hawk, p); + if (px->var) hawk_clrpt(hawk, px->var); + if (px->in) hawk_clrpt(hawk, px->in); + hawk_freemem(hawk, p); break; } default: { HAWK_ASSERT (!"should never happen - invalid node type"); - hawk_freemem (hawk, p); + hawk_freemem(hawk, p); break; } } diff --git a/lib/utf8.c b/lib/utf8.c index 618b404d..a9b62466 100644 --- a/lib/utf8.c +++ b/lib/utf8.c @@ -74,8 +74,8 @@ static HAWK_INLINE __utf8_t* get_utf8_slot (hawk_uch_t uc) { __utf8_t* cur, * end; - /*HAWK_ASSERT (hawk, HAWK_SIZEOF(hawk_bch_t) == 1); - HAWK_ASSERT (hawk, HAWK_SIZEOF(hawk_uch_t) >= 2);*/ + /*HAWK_ASSERT(hawk, HAWK_SIZEOF(hawk_bch_t) == 1); + HAWK_ASSERT(hawk, HAWK_SIZEOF(hawk_uch_t) >= 2);*/ end = utf8_table + HAWK_COUNTOF(utf8_table); cur = utf8_table; @@ -120,10 +120,10 @@ hawk_oow_t hawk_utf8_to_uc (const hawk_bch_t* utf8, hawk_oow_t size, hawk_uch_t* { __utf8_t* cur, * end; - /*HAWK_ASSERT (hawk, utf8 != HAWK_NULL); - HAWK_ASSERT (hawk, size > 0); - HAWK_ASSERT (hawk, HAWK_SIZEOF(hawk_bch_t) == 1); - HAWK_ASSERT (hawk, HAWK_SIZEOF(hawk_uch_t) >= 2);*/ + /*HAWK_ASSERT(hawk, utf8 != HAWK_NULL); + HAWK_ASSERT(hawk, size > 0); + HAWK_ASSERT(hawk, HAWK_SIZEOF(hawk_bch_t) == 1); + HAWK_ASSERT(hawk, HAWK_SIZEOF(hawk_uch_t) >= 2);*/ end = utf8_table + HAWK_COUNTOF(utf8_table); cur = utf8_table; diff --git a/lib/utl.c b/lib/utl.c index 1a9c50d9..9704a966 100644 --- a/lib/utl.c +++ b/lib/utl.c @@ -354,7 +354,7 @@ int hawk_conv_uchars_to_bchars_with_cmgr (const hawk_uch_t* ucs, hawk_oow_t* ucs } /* it assumes that bcsbuf is large enough to hold a character */ - /*HAWK_ASSERT (hawk, n <= HAWK_COUNTOF(bcsbuf));*/ + /*HAWK_ASSERT(hawk, n <= HAWK_COUNTOF(bcsbuf));*/ p++; mlen += n; } @@ -435,7 +435,7 @@ int hawk_conv_ucstr_to_bcstr_with_cmgr ( } /* it assumes that bcs is large enough to hold a character */ - /*HAWK_ASSERT (hawk, n <= HAWK_COUNTOF(bcs));*/ + /*HAWK_ASSERT(hawk, n <= HAWK_COUNTOF(bcs));*/ p++; mlen += n; } diff --git a/lib/val.c b/lib/val.c index e9539e8b..7c1c47cb 100644 --- a/lib/val.c +++ b/lib/val.c @@ -2778,7 +2778,7 @@ int hawk_rtx_valtonum (hawk_rtx_t* rtx, const hawk_val_t* v, hawk_int_t* l, hawk default: invalid: #if defined(DEBUG_VAL) - hawk_logfmt (hawk, HAWK_T(">>WRONG VALUE TYPE [%d] in hawk_rtx_valtonum()\n"), v->type); + hawk_logfmt(hawk, HAWK_T(">>WRONG VALUE TYPE [%d] in hawk_rtx_valtonum()\n"), v->type); #endif hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_EVALTONUM); return -1; /* error */ diff --git a/t/h-002.hawk b/t/h-002.hawk index 9b7f1ffb..4cbf63fc 100644 --- a/t/h-002.hawk +++ b/t/h-002.hawk @@ -665,6 +665,29 @@ function main() f = test10 tap_ensure (f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 55, @SCRIPTNAME, @SCRIPTLINE); } + + + { + tap_ensure(test12(2,5), -3, @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test12(3,5), 8, @SCRIPTNAME, @SCRIPTLINE); + + tap_ensure(test13(1), 1, @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test13(2), 2, @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test13(3), 3, @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test13(4), 4, @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test13(5), 5, @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test13(6), 1005, @SCRIPTNAME, @SCRIPTLINE); + + tap_ensure(test14("hello"), "world", @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test14("donkey"), "rankey", @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test14("speed"), "unknown", @SCRIPTNAME, @SCRIPTLINE); + + tap_ensure(test15("hello"), "world", @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test15("donkey"), "[rankey012]", @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test15("skunk"), "stinks", @SCRIPTNAME, @SCRIPTLINE); + tap_ensure(test15("speed"), "unknown", @SCRIPTNAME, @SCRIPTLINE); + } + tap_end (); } @@ -709,3 +732,88 @@ function test10(...) { function test11(...) { return (3 in @argv); } + +function test12(...) { + switch(@argv[0] * @argv[1]) { + case 10: + return @argv[0] - @argv[1]; + + default: + return @argv[0] + @argv[1]; + } +} + +function test13(x) { + @local a; + + a = 0; + + switch(x) { + default: + a = 1000; + + case 5: + a++; + + case 4: + a++; + + case 3: + a++; + + case 2: + a++; + + case 1: + a++; + break; + } + + return a; +} + +function test14(x) { + switch(x) { + case "hello": + return "world"; + + case "donkey": + return "rankey"; + + default: + return "unknown"; + + } +} + + +function test15(x) { + @local a, i; + + switch(x) { + case "hello": + a = "world"; + break; + + case "donkey": + { + @local l; + a = "rankey"; + l = length(a); + for (i = 0; i < l; i++) { + if (i == 3) break; + a = sprintf("%s%d", a, i); + } + a = sprintf("[%s]", a); + break; + } + + default: + if (x == "skunk") a = "stinks"; + else a = "unknown"; + break; + } + + return a; +} +