renamed some functions, variables, definitions, etc to shorten names.
- renamed global to gbl - renamed local to lcl
This commit is contained in:
@ -160,7 +160,7 @@ int Awk::Console::setFNR (long_t fnr)
|
||||
if (tmp == QSE_NULL) return -1;
|
||||
|
||||
qse_awk_rtx_refupval (eio->rtx, tmp);
|
||||
n = qse_awk_rtx_setglobal (eio->rtx, QSE_AWK_GLOBAL_FNR, tmp);
|
||||
n = qse_awk_rtx_setgbl (eio->rtx, QSE_AWK_GBL_FNR, tmp);
|
||||
qse_awk_rtx_refdownval (eio->rtx, tmp);
|
||||
|
||||
return n;
|
||||
@ -998,7 +998,7 @@ int Awk::Run::setGlobal (int id, long_t v)
|
||||
if (tmp == QSE_NULL) return -1;
|
||||
|
||||
qse_awk_rtx_refupval (run, tmp);
|
||||
int n = qse_awk_rtx_setglobal (this->run, id, tmp);
|
||||
int n = qse_awk_rtx_setgbl (this->run, id, tmp);
|
||||
qse_awk_rtx_refdownval (run, tmp);
|
||||
return n;
|
||||
}
|
||||
@ -1011,7 +1011,7 @@ int Awk::Run::setGlobal (int id, real_t v)
|
||||
if (tmp == QSE_NULL) return -1;
|
||||
|
||||
qse_awk_rtx_refupval (run, tmp);
|
||||
int n = qse_awk_rtx_setglobal (this->run, id, tmp);
|
||||
int n = qse_awk_rtx_setgbl (this->run, id, tmp);
|
||||
qse_awk_rtx_refdownval (run, tmp);
|
||||
return n;
|
||||
}
|
||||
@ -1024,24 +1024,24 @@ int Awk::Run::setGlobal (int id, const char_t* ptr, size_t len)
|
||||
if (tmp == QSE_NULL) return -1;
|
||||
|
||||
qse_awk_rtx_refupval (run, tmp);
|
||||
int n = qse_awk_rtx_setglobal (this->run, id, tmp);
|
||||
int n = qse_awk_rtx_setgbl (this->run, id, tmp);
|
||||
qse_awk_rtx_refdownval (run, tmp);
|
||||
return n;
|
||||
}
|
||||
|
||||
int Awk::Run::setGlobal (int id, const Return& global)
|
||||
int Awk::Run::setGlobal (int id, const Return& gbl)
|
||||
{
|
||||
QSE_ASSERT (this->run != QSE_NULL);
|
||||
|
||||
return qse_awk_rtx_setglobal (this->run, id, global.toVal());
|
||||
return qse_awk_rtx_setgbl (this->run, id, gbl.toVal());
|
||||
}
|
||||
|
||||
int Awk::Run::getGlobal (int id, Argument& global) const
|
||||
int Awk::Run::getGlobal (int id, Argument& gbl) const
|
||||
{
|
||||
QSE_ASSERT (this->run != QSE_NULL);
|
||||
|
||||
global.clear ();
|
||||
return global.init (qse_awk_rtx_getglobal(this->run,id));
|
||||
gbl.clear ();
|
||||
return gbl.init (qse_awk_rtx_getgbl(this->run,id));
|
||||
}
|
||||
|
||||
void Awk::Run::setData (void* data)
|
||||
@ -1468,7 +1468,7 @@ int Awk::addGlobal (const char_t* name)
|
||||
{
|
||||
QSE_ASSERT (awk != QSE_NULL);
|
||||
|
||||
int n = qse_awk_addglobal (awk, name, qse_strlen(name));
|
||||
int n = qse_awk_addgbl (awk, name, qse_strlen(name));
|
||||
if (n == -1) retrieveError ();
|
||||
return n;
|
||||
}
|
||||
@ -1476,7 +1476,7 @@ int Awk::addGlobal (const char_t* name)
|
||||
int Awk::deleteGlobal (const char_t* name)
|
||||
{
|
||||
QSE_ASSERT (awk != QSE_NULL);
|
||||
int n = qse_awk_delglobal (awk, name, qse_strlen(name));
|
||||
int n = qse_awk_delgbl (awk, name, qse_strlen(name));
|
||||
if (n == -1) retrieveError ();
|
||||
return n;
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ StdAwk::StdAwk ()
|
||||
{
|
||||
}
|
||||
|
||||
#define ADD_FUNC(name,min,max,impl) \
|
||||
#define ADDFNC(name,min,max,impl) \
|
||||
do { \
|
||||
if (addFunction (name, min, max, \
|
||||
(FunctionHandler)impl) == -1) \
|
||||
@ -56,18 +56,18 @@ int StdAwk::open ()
|
||||
int n = Awk::open ();
|
||||
if (n == -1) return n;
|
||||
|
||||
ADD_FUNC (QSE_T("sin"), 1, 1, &StdAwk::sin);
|
||||
ADD_FUNC (QSE_T("cos"), 1, 1, &StdAwk::cos);
|
||||
ADD_FUNC (QSE_T("tan"), 1, 1, &StdAwk::tan);
|
||||
ADD_FUNC (QSE_T("atan"), 1, 1, &StdAwk::atan);
|
||||
ADD_FUNC (QSE_T("atan2"), 2, 2, &StdAwk::atan2);
|
||||
ADD_FUNC (QSE_T("log"), 1, 1, &StdAwk::log);
|
||||
ADD_FUNC (QSE_T("exp"), 1, 1, &StdAwk::exp);
|
||||
ADD_FUNC (QSE_T("sqrt"), 1, 1, &StdAwk::sqrt);
|
||||
ADD_FUNC (QSE_T("int"), 1, 1, &StdAwk::fnint);
|
||||
ADD_FUNC (QSE_T("rand"), 0, 0, &StdAwk::rand);
|
||||
ADD_FUNC (QSE_T("srand"), 0, 1, &StdAwk::srand);
|
||||
ADD_FUNC (QSE_T("system"), 1, 1, &StdAwk::system);
|
||||
ADDFNC (QSE_T("sin"), 1, 1, &StdAwk::sin);
|
||||
ADDFNC (QSE_T("cos"), 1, 1, &StdAwk::cos);
|
||||
ADDFNC (QSE_T("tan"), 1, 1, &StdAwk::tan);
|
||||
ADDFNC (QSE_T("atan"), 1, 1, &StdAwk::atan);
|
||||
ADDFNC (QSE_T("atan2"), 2, 2, &StdAwk::atan2);
|
||||
ADDFNC (QSE_T("log"), 1, 1, &StdAwk::log);
|
||||
ADDFNC (QSE_T("exp"), 1, 1, &StdAwk::exp);
|
||||
ADDFNC (QSE_T("sqrt"), 1, 1, &StdAwk::sqrt);
|
||||
ADDFNC (QSE_T("int"), 1, 1, &StdAwk::fnint);
|
||||
ADDFNC (QSE_T("rand"), 0, 0, &StdAwk::rand);
|
||||
ADDFNC (QSE_T("srand"), 0, 1, &StdAwk::srand);
|
||||
ADDFNC (QSE_T("system"), 1, 1, &StdAwk::system);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -114,21 +114,21 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t ext)
|
||||
qse_map_setcopier (awk->parse.named, QSE_MAP_VAL, QSE_MAP_COPIER_INLINE);
|
||||
qse_map_setscale (awk->parse.named, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t));
|
||||
|
||||
awk->parse.globals = qse_lda_open (mmgr, QSE_SIZEOF(awk), 128);
|
||||
awk->parse.locals = qse_lda_open (mmgr, QSE_SIZEOF(awk), 64);
|
||||
awk->parse.gbls = qse_lda_open (mmgr, QSE_SIZEOF(awk), 128);
|
||||
awk->parse.lcls = qse_lda_open (mmgr, QSE_SIZEOF(awk), 64);
|
||||
awk->parse.params = qse_lda_open (mmgr, QSE_SIZEOF(awk), 32);
|
||||
|
||||
if (awk->parse.globals == QSE_NULL ||
|
||||
awk->parse.locals == QSE_NULL ||
|
||||
if (awk->parse.gbls == QSE_NULL ||
|
||||
awk->parse.lcls == QSE_NULL ||
|
||||
awk->parse.params == QSE_NULL) goto oops;
|
||||
|
||||
*(qse_awk_t**)qse_lda_getxtn(awk->parse.globals) = awk;
|
||||
qse_lda_setcopier (awk->parse.globals, QSE_LDA_COPIER_INLINE);
|
||||
qse_lda_setscale (awk->parse.globals, QSE_SIZEOF(qse_char_t));
|
||||
*(qse_awk_t**)qse_lda_getxtn(awk->parse.gbls) = awk;
|
||||
qse_lda_setcopier (awk->parse.gbls, QSE_LDA_COPIER_INLINE);
|
||||
qse_lda_setscale (awk->parse.gbls, QSE_SIZEOF(qse_char_t));
|
||||
|
||||
*(qse_awk_t**)qse_lda_getxtn(awk->parse.locals) = awk;
|
||||
qse_lda_setcopier (awk->parse.locals, QSE_LDA_COPIER_INLINE);
|
||||
qse_lda_setscale (awk->parse.locals, QSE_SIZEOF(qse_char_t));
|
||||
*(qse_awk_t**)qse_lda_getxtn(awk->parse.lcls) = awk;
|
||||
qse_lda_setcopier (awk->parse.lcls, QSE_LDA_COPIER_INLINE);
|
||||
qse_lda_setscale (awk->parse.lcls, QSE_SIZEOF(qse_char_t));
|
||||
|
||||
*(qse_awk_t**)qse_lda_getxtn(awk->parse.params) = awk;
|
||||
qse_lda_setcopier (awk->parse.params, QSE_LDA_COPIER_INLINE);
|
||||
@ -139,10 +139,10 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t ext)
|
||||
awk->errlin = 0;
|
||||
awk->stopall = QSE_FALSE;
|
||||
|
||||
awk->parse.nlocals_max = 0;
|
||||
awk->parse.nlcls_max = 0;
|
||||
|
||||
awk->tree.nglobals = 0;
|
||||
awk->tree.nbglobals = 0;
|
||||
awk->tree.ngbls = 0;
|
||||
awk->tree.nbgbls = 0;
|
||||
awk->tree.begin = QSE_NULL;
|
||||
awk->tree.begin_tail = QSE_NULL;
|
||||
awk->tree.end = QSE_NULL;
|
||||
@ -186,7 +186,7 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t ext)
|
||||
|
||||
awk->assoc_data = QSE_NULL;
|
||||
|
||||
if (qse_awk_initglobals (awk) == -1) goto oops;
|
||||
if (qse_awk_initgbls (awk) == -1) goto oops;
|
||||
|
||||
return awk;
|
||||
|
||||
@ -194,8 +194,8 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t ext)
|
||||
oops:
|
||||
if (awk->fnc.user) qse_map_close (awk->fnc.user);
|
||||
if (awk->parse.params) qse_lda_close (awk->parse.params);
|
||||
if (awk->parse.locals) qse_lda_close (awk->parse.locals);
|
||||
if (awk->parse.globals) qse_lda_close (awk->parse.globals);
|
||||
if (awk->parse.lcls) qse_lda_close (awk->parse.lcls);
|
||||
if (awk->parse.gbls) qse_lda_close (awk->parse.gbls);
|
||||
if (awk->parse.named) qse_map_close (awk->parse.named);
|
||||
if (awk->parse.funs) qse_map_close (awk->parse.funs);
|
||||
if (awk->tree.funs) qse_map_close (awk->tree.funs);
|
||||
@ -217,8 +217,8 @@ int qse_awk_close (qse_awk_t* awk)
|
||||
qse_map_close (awk->fnc.user);
|
||||
|
||||
qse_lda_close (awk->parse.params);
|
||||
qse_lda_close (awk->parse.locals);
|
||||
qse_lda_close (awk->parse.globals);
|
||||
qse_lda_close (awk->parse.lcls);
|
||||
qse_lda_close (awk->parse.gbls);
|
||||
qse_map_close (awk->parse.named);
|
||||
qse_map_close (awk->parse.funs);
|
||||
|
||||
@ -255,27 +255,27 @@ int qse_awk_clear (qse_awk_t* awk)
|
||||
awk->src.shared.buf_pos = 0;
|
||||
awk->src.shared.buf_len = 0;
|
||||
|
||||
QSE_ASSERT (QSE_LDA_SIZE(awk->parse.globals) == awk->tree.nglobals);
|
||||
QSE_ASSERT (QSE_LDA_SIZE(awk->parse.gbls) == awk->tree.ngbls);
|
||||
/* delete all non-builtin global variables */
|
||||
qse_lda_delete (
|
||||
awk->parse.globals, awk->tree.nbglobals,
|
||||
QSE_LDA_SIZE(awk->parse.globals) - awk->tree.nbglobals);
|
||||
awk->parse.gbls, awk->tree.nbgbls,
|
||||
QSE_LDA_SIZE(awk->parse.gbls) - awk->tree.nbgbls);
|
||||
|
||||
qse_lda_clear (awk->parse.locals);
|
||||
qse_lda_clear (awk->parse.lcls);
|
||||
qse_lda_clear (awk->parse.params);
|
||||
qse_map_clear (awk->parse.named);
|
||||
qse_map_clear (awk->parse.funs);
|
||||
|
||||
awk->parse.nlocals_max = 0;
|
||||
awk->parse.nlcls_max = 0;
|
||||
awk->parse.depth.cur.block = 0;
|
||||
awk->parse.depth.cur.loop = 0;
|
||||
awk->parse.depth.cur.expr = 0;
|
||||
|
||||
/* clear parse trees */
|
||||
awk->tree.ok = 0;
|
||||
/*awk->tree.nbglobals = 0;
|
||||
awk->tree.nglobals = 0; */
|
||||
awk->tree.nglobals = awk->tree.nbglobals;
|
||||
/*awk->tree.nbgbls = 0;
|
||||
awk->tree.ngbls = 0; */
|
||||
awk->tree.ngbls = awk->tree.nbgbls;
|
||||
|
||||
awk->tree.cur_fun.ptr = QSE_NULL;
|
||||
awk->tree.cur_fun.len = 0;
|
||||
|
@ -38,8 +38,8 @@ typedef struct qse_awk_tree_t qse_awk_tree_t;
|
||||
#include "val.h"
|
||||
#include "misc.h"
|
||||
|
||||
#define QSE_AWK_MAX_GLOBALS 9999
|
||||
#define QSE_AWK_MAX_LOCALS 9999
|
||||
#define QSE_AWK_MAX_GBLS 9999
|
||||
#define QSE_AWK_MAX_LCLS 9999
|
||||
#define QSE_AWK_MAX_PARAMS 9999
|
||||
|
||||
#define QSE_AWK_ALLOC(awk,size) QSE_MMGR_ALLOC((awk)->mmgr,size)
|
||||
@ -65,8 +65,8 @@ typedef struct qse_awk_tree_t qse_awk_tree_t;
|
||||
|
||||
struct qse_awk_tree_t
|
||||
{
|
||||
qse_size_t nglobals; /* total number of globals */
|
||||
qse_size_t nbglobals; /* number of intrinsic globals */
|
||||
qse_size_t ngbls; /* total number of gbls */
|
||||
qse_size_t nbgbls; /* number of intrinsic gbls */
|
||||
qse_cstr_t cur_fun;
|
||||
qse_map_t* funs; /* awk function map */
|
||||
|
||||
@ -138,16 +138,16 @@ struct qse_awk_t
|
||||
qse_map_t* named;
|
||||
|
||||
/* global variables */
|
||||
qse_lda_t* globals;
|
||||
qse_lda_t* gbls;
|
||||
|
||||
/* local variables */
|
||||
qse_lda_t* locals;
|
||||
qse_lda_t* lcls;
|
||||
|
||||
/* parameters to a function */
|
||||
qse_lda_t* params;
|
||||
|
||||
/* maximum number of local variables */
|
||||
qse_size_t nlocals_max;
|
||||
qse_size_t nlcls_max;
|
||||
|
||||
qse_awk_nde_t* (*parse_block) (
|
||||
qse_awk_t*,qse_size_t,qse_bool_t);
|
||||
@ -331,7 +331,7 @@ struct qse_awk_rtx_t
|
||||
qse_char_t* ptr;
|
||||
qse_size_t len;
|
||||
} subsep;
|
||||
} global;
|
||||
} gbl;
|
||||
|
||||
/* eio chain */
|
||||
struct
|
||||
|
@ -204,7 +204,7 @@ int qse_awk_readeio (
|
||||
qse_str_clear (buf);
|
||||
|
||||
/* get the record separator */
|
||||
rs = qse_awk_rtx_getglobal (run, QSE_AWK_GLOBAL_RS);
|
||||
rs = qse_awk_rtx_getgbl (run, QSE_AWK_GBL_RS);
|
||||
qse_awk_rtx_refupval (run, rs);
|
||||
|
||||
if (rs->type == QSE_AWK_VAL_NIL)
|
||||
@ -275,11 +275,11 @@ int qse_awk_readeio (
|
||||
const qse_char_t* match_ptr;
|
||||
qse_size_t match_len;
|
||||
|
||||
QSE_ASSERT (run->global.rs != QSE_NULL);
|
||||
QSE_ASSERT (run->gbl.rs != QSE_NULL);
|
||||
|
||||
n = QSE_AWK_MATCHREX (
|
||||
run->awk, run->global.rs,
|
||||
((run->global.ignorecase)? QSE_REX_IGNORECASE: 0),
|
||||
run->awk, run->gbl.rs,
|
||||
((run->gbl.ignorecase)? QSE_REX_IGNORECASE: 0),
|
||||
QSE_STR_PTR(buf), QSE_STR_LEN(buf),
|
||||
&match_ptr, &match_len, &run->errnum);
|
||||
if (n == -1)
|
||||
@ -363,11 +363,11 @@ int qse_awk_readeio (
|
||||
const qse_char_t* match_ptr;
|
||||
qse_size_t match_len;
|
||||
|
||||
QSE_ASSERT (run->global.rs != QSE_NULL);
|
||||
QSE_ASSERT (run->gbl.rs != QSE_NULL);
|
||||
|
||||
n = QSE_AWK_MATCHREX (
|
||||
run->awk, run->global.rs,
|
||||
((run->global.ignorecase)? QSE_REX_IGNORECASE: 0),
|
||||
run->awk, run->gbl.rs,
|
||||
((run->gbl.ignorecase)? QSE_REX_IGNORECASE: 0),
|
||||
QSE_STR_PTR(buf), QSE_STR_LEN(buf),
|
||||
&match_ptr, &match_len, &run->errnum);
|
||||
if (n == -1)
|
||||
|
@ -652,7 +652,7 @@ static int fnc_split (
|
||||
if (a2 == QSE_NULL)
|
||||
{
|
||||
/* get the value from FS */
|
||||
t1 = qse_awk_rtx_getglobal (run, QSE_AWK_GLOBAL_FS);
|
||||
t1 = qse_awk_rtx_getgbl (run, QSE_AWK_GBL_FS);
|
||||
if (t1->type == QSE_AWK_VAL_NIL)
|
||||
{
|
||||
fs_ptr = QSE_T(" ");
|
||||
@ -680,7 +680,7 @@ static int fnc_split (
|
||||
|
||||
if (fs_len > 1)
|
||||
{
|
||||
fs_rex = run->global.fs;
|
||||
fs_rex = run->gbl.fs;
|
||||
fs_rex_free = QSE_NULL;
|
||||
}
|
||||
}
|
||||
@ -1072,7 +1072,7 @@ static int __substitute (qse_awk_rtx_t* run, qse_long_t max_count)
|
||||
}
|
||||
}
|
||||
|
||||
opt = (run->global.ignorecase)? QSE_REX_IGNORECASE: 0;
|
||||
opt = (run->gbl.ignorecase)? QSE_REX_IGNORECASE: 0;
|
||||
cur_ptr = a2_ptr;
|
||||
cur_len = a2_len;
|
||||
sub_count = 0;
|
||||
@ -1291,7 +1291,7 @@ static int fnc_match (
|
||||
if (a1->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str1);
|
||||
}
|
||||
|
||||
opt = (run->global.ignorecase)? QSE_REX_IGNORECASE: 0;
|
||||
opt = (run->gbl.ignorecase)? QSE_REX_IGNORECASE: 0;
|
||||
n = QSE_AWK_MATCHREX (
|
||||
run->awk, rex, opt, str0, len0,
|
||||
&mat_ptr, &mat_len, &run->errnum);
|
||||
@ -1324,14 +1324,14 @@ static int fnc_match (
|
||||
|
||||
qse_awk_rtx_refupval (run, a1);
|
||||
|
||||
if (qse_awk_rtx_setglobal (run, QSE_AWK_GLOBAL_RSTART, a0) == -1)
|
||||
if (qse_awk_rtx_setgbl (run, QSE_AWK_GBL_RSTART, a0) == -1)
|
||||
{
|
||||
qse_awk_rtx_refdownval (run, a1);
|
||||
qse_awk_rtx_refdownval (run, a0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (qse_awk_rtx_setglobal (run, QSE_AWK_GLOBAL_RLENGTH, a1) == -1)
|
||||
if (qse_awk_rtx_setgbl (run, QSE_AWK_GBL_RLENGTH, a1) == -1)
|
||||
{
|
||||
qse_awk_rtx_refdownval (run, a1);
|
||||
qse_awk_rtx_refdownval (run, a0);
|
||||
|
@ -738,7 +738,7 @@ qse_char_t* qse_awk_strxntok (
|
||||
{
|
||||
/* each token is delimited by one of charaters
|
||||
* in the delimeter set "delim". */
|
||||
if (run->global.ignorecase)
|
||||
if (run->gbl.ignorecase)
|
||||
{
|
||||
while (p < end)
|
||||
{
|
||||
@ -773,7 +773,7 @@ qse_char_t* qse_awk_strxntok (
|
||||
* in the delimeter set "delim". however, all space characters
|
||||
* surrounding the token are removed */
|
||||
while (p < end && QSE_AWK_ISSPACE(run->awk,*p)) p++;
|
||||
if (run->global.ignorecase)
|
||||
if (run->gbl.ignorecase)
|
||||
{
|
||||
while (p < end)
|
||||
{
|
||||
@ -846,7 +846,7 @@ qse_char_t* qse_awk_strxntokbyrex (
|
||||
{
|
||||
n = QSE_AWK_MATCHREX (
|
||||
run->awk, rex,
|
||||
((run->global.ignorecase)? QSE_REX_IGNORECASE: 0),
|
||||
((run->gbl.ignorecase)? QSE_REX_IGNORECASE: 0),
|
||||
ptr, left, (const qse_char_t**)&match_ptr, &match_len,
|
||||
errnum);
|
||||
if (n == -1) return QSE_NULL;
|
||||
|
@ -116,7 +116,7 @@ enum token_t
|
||||
|
||||
enum
|
||||
{
|
||||
PARSE_GLOBAL,
|
||||
PARSE_GBL,
|
||||
PARSE_FUNCTION,
|
||||
PARSE_BEGIN,
|
||||
PARSE_END,
|
||||
@ -145,18 +145,18 @@ struct binmap_t
|
||||
static int parse (qse_awk_t* awk);
|
||||
|
||||
static qse_awk_t* parse_progunit (qse_awk_t* awk);
|
||||
static qse_awk_t* collect_globals (qse_awk_t* awk);
|
||||
static void adjust_static_globals (qse_awk_t* awk);
|
||||
static qse_awk_t* collect_gbls (qse_awk_t* awk);
|
||||
static void adjust_static_gbls (qse_awk_t* awk);
|
||||
|
||||
static qse_size_t get_global (
|
||||
static qse_size_t get_gbl (
|
||||
qse_awk_t* awk, const qse_char_t* name, qse_size_t len);
|
||||
static qse_size_t find_global (
|
||||
static qse_size_t find_gbl (
|
||||
qse_awk_t* awk, const qse_char_t* name, qse_size_t len);
|
||||
static int add_global (
|
||||
static int add_gbl (
|
||||
qse_awk_t* awk, const qse_char_t* name, qse_size_t len,
|
||||
qse_size_t line, int force);
|
||||
static qse_awk_t* collect_locals (
|
||||
qse_awk_t* awk, qse_size_t nlocals, qse_bool_t istop);
|
||||
static qse_awk_t* collect_lcls (
|
||||
qse_awk_t* awk, qse_size_t nlcls, qse_bool_t istop);
|
||||
|
||||
static qse_awk_nde_t* parse_function (qse_awk_t* awk);
|
||||
static qse_awk_nde_t* parse_begin (qse_awk_t* awk);
|
||||
@ -291,16 +291,16 @@ static kwent_t kwtab[] =
|
||||
{ QSE_NULL, 0, 0, 0 }
|
||||
};
|
||||
|
||||
typedef struct global_t global_t;
|
||||
typedef struct gbl_t gbl_t;
|
||||
|
||||
struct global_t
|
||||
struct gbl_t
|
||||
{
|
||||
const qse_char_t* name;
|
||||
qse_size_t name_len;
|
||||
int valid;
|
||||
};
|
||||
|
||||
static global_t gtab[] =
|
||||
static gbl_t gtab[] =
|
||||
{
|
||||
{ QSE_T("ARGC"), 4, 0 },
|
||||
{ QSE_T("ARGV"), 4, 0 },
|
||||
@ -455,7 +455,7 @@ void qse_awk_setmaxdepth (qse_awk_t* awk, int types, qse_size_t depth)
|
||||
}
|
||||
}
|
||||
|
||||
const qse_char_t* qse_awk_rtx_getglobalname (
|
||||
const qse_char_t* qse_awk_rtx_getgblname (
|
||||
qse_awk_t* awk, qse_size_t idx, qse_size_t* len)
|
||||
{
|
||||
/*
|
||||
@ -463,10 +463,10 @@ const qse_char_t* qse_awk_rtx_getglobalname (
|
||||
return gtab[idx].name;
|
||||
*/
|
||||
|
||||
QSE_ASSERT (idx < QSE_LDA_SIZE(awk->parse.globals));
|
||||
QSE_ASSERT (idx < QSE_LDA_SIZE(awk->parse.gbls));
|
||||
|
||||
*len = QSE_LDA_DLEN(awk->parse.globals,idx);
|
||||
return QSE_LDA_DPTR(awk->parse.globals,idx);
|
||||
*len = QSE_LDA_DLEN(awk->parse.gbls,idx);
|
||||
return QSE_LDA_DPTR(awk->parse.gbls,idx);
|
||||
}
|
||||
|
||||
qse_cstr_t* qse_awk_getkw (qse_awk_t* awk, int id, qse_cstr_t* s)
|
||||
@ -528,7 +528,7 @@ static int parse (qse_awk_t* awk)
|
||||
return -1;
|
||||
}
|
||||
|
||||
adjust_static_globals (awk);
|
||||
adjust_static_gbls (awk);
|
||||
|
||||
#define EXIT_PARSE(v) do { n = (v); goto exit_parse; } while(0)
|
||||
|
||||
@ -580,7 +580,7 @@ static int parse (qse_awk_t* awk)
|
||||
}
|
||||
}
|
||||
|
||||
QSE_ASSERT (awk->tree.nglobals == QSE_LDA_SIZE(awk->parse.globals));
|
||||
QSE_ASSERT (awk->tree.ngbls == QSE_LDA_SIZE(awk->parse.gbls));
|
||||
|
||||
if (awk->src.ios.out != QSE_NULL)
|
||||
{
|
||||
@ -611,7 +611,7 @@ exit_parse:
|
||||
static qse_awk_t* parse_progunit (qse_awk_t* awk)
|
||||
{
|
||||
/*
|
||||
global xxx, xxxx;
|
||||
gbl xxx, xxxx;
|
||||
BEGIN { action }
|
||||
END { action }
|
||||
pattern { action }
|
||||
@ -622,20 +622,20 @@ static qse_awk_t* parse_progunit (qse_awk_t* awk)
|
||||
|
||||
if ((awk->option & QSE_AWK_EXPLICIT) && MATCH(awk,TOKEN_GLOBAL))
|
||||
{
|
||||
qse_size_t nglobals;
|
||||
qse_size_t ngbls;
|
||||
|
||||
awk->parse.id.block = PARSE_GLOBAL;
|
||||
awk->parse.id.block = PARSE_GBL;
|
||||
|
||||
if (get_token(awk) == -1) return QSE_NULL;
|
||||
|
||||
QSE_ASSERT (awk->tree.nglobals == QSE_LDA_SIZE(awk->parse.globals));
|
||||
nglobals = awk->tree.nglobals;
|
||||
if (collect_globals (awk) == QSE_NULL)
|
||||
QSE_ASSERT (awk->tree.ngbls == QSE_LDA_SIZE(awk->parse.gbls));
|
||||
ngbls = awk->tree.ngbls;
|
||||
if (collect_gbls (awk) == QSE_NULL)
|
||||
{
|
||||
qse_lda_delete (
|
||||
awk->parse.globals, nglobals,
|
||||
QSE_LDA_SIZE(awk->parse.globals) - nglobals);
|
||||
awk->tree.nglobals = nglobals;
|
||||
awk->parse.gbls, ngbls,
|
||||
QSE_LDA_SIZE(awk->parse.gbls) - ngbls);
|
||||
awk->tree.ngbls = ngbls;
|
||||
return QSE_NULL;
|
||||
}
|
||||
}
|
||||
@ -870,7 +870,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk)
|
||||
}
|
||||
|
||||
/* check if it coincides to be a global variable name */
|
||||
g = find_global (awk, name, name_len);
|
||||
g = find_gbl (awk, name, name_len);
|
||||
if (g != QSE_LDA_NIL)
|
||||
{
|
||||
SETERRARG (
|
||||
@ -945,7 +945,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk)
|
||||
/* NOTE: the following is not a conflict.
|
||||
* so the parameter is not checked against
|
||||
* global variables.
|
||||
* global x;
|
||||
* gbl x;
|
||||
* function f (x) { print x; }
|
||||
* x in print x is a parameter
|
||||
*/
|
||||
@ -1213,10 +1213,10 @@ static qse_awk_nde_t* parse_block (
|
||||
{
|
||||
qse_awk_nde_t* head, * curr, * nde;
|
||||
qse_awk_nde_blk_t* block;
|
||||
qse_size_t nlocals, nlocals_max, tmp;
|
||||
qse_size_t nlcls, nlcls_max, tmp;
|
||||
|
||||
nlocals = QSE_LDA_SIZE(awk->parse.locals);
|
||||
nlocals_max = awk->parse.nlocals_max;
|
||||
nlcls = QSE_LDA_SIZE(awk->parse.lcls);
|
||||
nlcls_max = awk->parse.nlcls_max;
|
||||
|
||||
/* local variable declarations */
|
||||
if (awk->option & QSE_AWK_EXPLICIT)
|
||||
@ -1228,16 +1228,16 @@ static qse_awk_nde_t* parse_block (
|
||||
if (get_token(awk) == -1)
|
||||
{
|
||||
qse_lda_delete (
|
||||
awk->parse.locals, nlocals,
|
||||
QSE_LDA_SIZE(awk->parse.locals)-nlocals);
|
||||
awk->parse.lcls, nlcls,
|
||||
QSE_LDA_SIZE(awk->parse.lcls)-nlcls);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
if (collect_locals (awk, nlocals, istop) == QSE_NULL)
|
||||
if (collect_lcls (awk, nlcls, istop) == QSE_NULL)
|
||||
{
|
||||
qse_lda_delete (
|
||||
awk->parse.locals, nlocals,
|
||||
QSE_LDA_SIZE(awk->parse.locals)-nlocals);
|
||||
awk->parse.lcls, nlcls,
|
||||
QSE_LDA_SIZE(awk->parse.lcls)-nlcls);
|
||||
return QSE_NULL;
|
||||
}
|
||||
}
|
||||
@ -1258,8 +1258,8 @@ static qse_awk_nde_t* parse_block (
|
||||
if (MATCH(awk,TOKEN_EOF))
|
||||
{
|
||||
qse_lda_delete (
|
||||
awk->parse.locals, nlocals,
|
||||
QSE_LDA_SIZE(awk->parse.locals) - nlocals);
|
||||
awk->parse.lcls, nlcls,
|
||||
QSE_LDA_SIZE(awk->parse.lcls) - nlcls);
|
||||
if (head != QSE_NULL) qse_awk_clrpt (awk, head);
|
||||
|
||||
SETERRLIN (awk, QSE_AWK_EENDSRC, awk->token.prev.line);
|
||||
@ -1272,8 +1272,8 @@ static qse_awk_nde_t* parse_block (
|
||||
if (get_token(awk) == -1)
|
||||
{
|
||||
qse_lda_delete (
|
||||
awk->parse.locals, nlocals,
|
||||
QSE_LDA_SIZE(awk->parse.locals)-nlocals);
|
||||
awk->parse.lcls, nlcls,
|
||||
QSE_LDA_SIZE(awk->parse.lcls)-nlcls);
|
||||
if (head != QSE_NULL) qse_awk_clrpt (awk, head);
|
||||
return QSE_NULL;
|
||||
}
|
||||
@ -1286,8 +1286,8 @@ static qse_awk_nde_t* parse_block (
|
||||
if (nde == QSE_NULL)
|
||||
{
|
||||
qse_lda_delete (
|
||||
awk->parse.locals, nlocals,
|
||||
QSE_LDA_SIZE(awk->parse.locals)-nlocals);
|
||||
awk->parse.lcls, nlcls,
|
||||
QSE_LDA_SIZE(awk->parse.lcls)-nlcls);
|
||||
if (head != QSE_NULL) qse_awk_clrpt (awk, head);
|
||||
return QSE_NULL;
|
||||
}
|
||||
@ -1316,21 +1316,21 @@ static qse_awk_nde_t* parse_block (
|
||||
if (block == QSE_NULL)
|
||||
{
|
||||
qse_lda_delete (
|
||||
awk->parse.locals, nlocals,
|
||||
QSE_LDA_SIZE(awk->parse.locals)-nlocals);
|
||||
awk->parse.lcls, nlcls,
|
||||
QSE_LDA_SIZE(awk->parse.lcls)-nlcls);
|
||||
qse_awk_clrpt (awk, head);
|
||||
|
||||
SETERRLIN (awk, QSE_AWK_ENOMEM, line);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
tmp = QSE_LDA_SIZE(awk->parse.locals);
|
||||
if (tmp > awk->parse.nlocals_max) awk->parse.nlocals_max = tmp;
|
||||
tmp = QSE_LDA_SIZE(awk->parse.lcls);
|
||||
if (tmp > awk->parse.nlcls_max) awk->parse.nlcls_max = tmp;
|
||||
|
||||
/* remove all locals to move it up to the top level */
|
||||
qse_lda_delete (awk->parse.locals, nlocals, tmp - nlocals);
|
||||
/* remove all lcls to move it up to the top level */
|
||||
qse_lda_delete (awk->parse.lcls, nlcls, tmp - nlcls);
|
||||
|
||||
/* adjust the number of locals for a block without any statements */
|
||||
/* adjust the number of lcls for a block without any statements */
|
||||
/* if (head == QSE_NULL) tmp = 0; */
|
||||
|
||||
block->type = QSE_AWK_NDE_BLK;
|
||||
@ -1345,13 +1345,13 @@ static qse_awk_nde_t* parse_block (
|
||||
/* migrate all block-local variables to a top-level block */
|
||||
if (istop)
|
||||
{
|
||||
block->nlocals = awk->parse.nlocals_max - nlocals;
|
||||
awk->parse.nlocals_max = nlocals_max;
|
||||
block->nlcls = awk->parse.nlcls_max - nlcls;
|
||||
awk->parse.nlcls_max = nlcls_max;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*block->nlocals = tmp - nlocals;*/
|
||||
block->nlocals = 0;
|
||||
/*block->nlcls = tmp - nlcls;*/
|
||||
block->nlcls = 0;
|
||||
}
|
||||
|
||||
return (qse_awk_nde_t*)block;
|
||||
@ -1377,81 +1377,81 @@ static qse_awk_nde_t* parse_block_dc (
|
||||
return nde;
|
||||
}
|
||||
|
||||
int qse_awk_initglobals (qse_awk_t* awk)
|
||||
int qse_awk_initgbls (qse_awk_t* awk)
|
||||
{
|
||||
int id;
|
||||
|
||||
/* qse_awk_initglobals is not generic-purpose. call this from
|
||||
/* qse_awk_initgbls is not generic-purpose. call this from
|
||||
* qse_awk_open only. */
|
||||
QSE_ASSERT (awk->tree.nbglobals == 0 && awk->tree.nglobals == 0);
|
||||
QSE_ASSERT (awk->tree.nbgbls == 0 && awk->tree.ngbls == 0);
|
||||
|
||||
awk->tree.nbglobals = 0;
|
||||
awk->tree.nglobals = 0;
|
||||
awk->tree.nbgbls = 0;
|
||||
awk->tree.ngbls = 0;
|
||||
|
||||
for (id = QSE_AWK_MIN_GLOBAL_ID; id <= QSE_AWK_MAX_GLOBAL_ID; id++)
|
||||
for (id = QSE_AWK_MIN_GBL_ID; id <= QSE_AWK_MAX_GBL_ID; id++)
|
||||
{
|
||||
qse_size_t g;
|
||||
|
||||
g = qse_lda_insert (
|
||||
awk->parse.globals,
|
||||
QSE_LDA_SIZE(awk->parse.globals),
|
||||
awk->parse.gbls,
|
||||
QSE_LDA_SIZE(awk->parse.gbls),
|
||||
(qse_char_t*)gtab[id].name,
|
||||
gtab[id].name_len);
|
||||
if (g == QSE_LDA_NIL) return -1;
|
||||
|
||||
QSE_ASSERT ((int)g == id);
|
||||
|
||||
awk->tree.nbglobals++;
|
||||
awk->tree.nglobals++;
|
||||
awk->tree.nbgbls++;
|
||||
awk->tree.ngbls++;
|
||||
}
|
||||
|
||||
QSE_ASSERT (awk->tree.nbglobals ==
|
||||
QSE_AWK_MAX_GLOBAL_ID-QSE_AWK_MIN_GLOBAL_ID+1);
|
||||
QSE_ASSERT (awk->tree.nbgbls ==
|
||||
QSE_AWK_MAX_GBL_ID-QSE_AWK_MIN_GBL_ID+1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void adjust_static_globals (qse_awk_t* awk)
|
||||
static void adjust_static_gbls (qse_awk_t* awk)
|
||||
{
|
||||
int id;
|
||||
|
||||
QSE_ASSERT (awk->tree.nbglobals >=
|
||||
QSE_AWK_MAX_GLOBAL_ID - QSE_AWK_MAX_GLOBAL_ID + 1);
|
||||
QSE_ASSERT (awk->tree.nbgbls >=
|
||||
QSE_AWK_MAX_GBL_ID - QSE_AWK_MAX_GBL_ID + 1);
|
||||
|
||||
for (id = QSE_AWK_MIN_GLOBAL_ID; id <= QSE_AWK_MAX_GLOBAL_ID; id++)
|
||||
for (id = QSE_AWK_MIN_GBL_ID; id <= QSE_AWK_MAX_GBL_ID; id++)
|
||||
{
|
||||
if (gtab[id].valid != 0 &&
|
||||
(awk->option & gtab[id].valid) != gtab[id].valid)
|
||||
{
|
||||
/*awk->parse.globals.buf[id].name.len = 0;*/
|
||||
QSE_LDA_DLEN(awk->parse.globals,id) = 0;
|
||||
/*awk->parse.gbls.buf[id].name.len = 0;*/
|
||||
QSE_LDA_DLEN(awk->parse.gbls,id) = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*awk->parse.globals.buf[id].name.len = gtab[id].name_len;*/
|
||||
QSE_LDA_DLEN(awk->parse.globals,id) = gtab[id].name_len;
|
||||
/*awk->parse.gbls.buf[id].name.len = gtab[id].name_len;*/
|
||||
QSE_LDA_DLEN(awk->parse.gbls,id) = gtab[id].name_len;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct check_global_t check_global_t;
|
||||
typedef struct check_gbl_t check_gbl_t;
|
||||
|
||||
struct check_global_t
|
||||
struct check_gbl_t
|
||||
{
|
||||
qse_cstr_t name;
|
||||
qse_size_t index;
|
||||
qse_lda_walk_t walk;
|
||||
};
|
||||
|
||||
static qse_lda_walk_t check_global (qse_lda_t* lda, qse_size_t index, void* arg)
|
||||
static qse_lda_walk_t check_gbl (qse_lda_t* lda, qse_size_t index, void* arg)
|
||||
{
|
||||
qse_cstr_t tmp;
|
||||
qse_awk_t* awk = *(qse_awk_t**)qse_lda_getxtn(lda);
|
||||
check_global_t* cg = (check_global_t*)arg;
|
||||
check_gbl_t* cg = (check_gbl_t*)arg;
|
||||
|
||||
tmp.ptr = QSE_LDA_DPTR(lda,index);
|
||||
tmp.len = QSE_LDA_DLEN(lda,index);
|
||||
|
||||
if (index < awk->tree.nbglobals)
|
||||
if (index < awk->tree.nbgbls)
|
||||
{
|
||||
qse_map_pair_t* pair;
|
||||
|
||||
@ -1472,10 +1472,10 @@ static qse_lda_walk_t check_global (qse_lda_t* lda, qse_size_t index, void* arg)
|
||||
return cg->walk;
|
||||
}
|
||||
|
||||
static qse_size_t get_global (
|
||||
static qse_size_t get_gbl (
|
||||
qse_awk_t* awk, const qse_char_t* name, qse_size_t len)
|
||||
{
|
||||
check_global_t cg;
|
||||
check_gbl_t cg;
|
||||
|
||||
cg.name.ptr = name;
|
||||
cg.name.len = len;
|
||||
@ -1483,34 +1483,34 @@ static qse_size_t get_global (
|
||||
cg.walk = QSE_LDA_WALK_BACKWARD;
|
||||
|
||||
/* return qse_lda_rsearch (
|
||||
awk->parse.globals, QSE_LDA_SIZE(awk->parse.globals),
|
||||
awk->parse.gbls, QSE_LDA_SIZE(awk->parse.gbls),
|
||||
name, len); */
|
||||
|
||||
qse_lda_rwalk (awk->parse.globals, check_global, &cg);
|
||||
qse_lda_rwalk (awk->parse.gbls, check_gbl, &cg);
|
||||
return cg.index;
|
||||
}
|
||||
|
||||
static qse_size_t find_global (
|
||||
static qse_size_t find_gbl (
|
||||
qse_awk_t* awk, const qse_char_t* name, qse_size_t len)
|
||||
{
|
||||
check_global_t cg;
|
||||
check_gbl_t cg;
|
||||
|
||||
cg.name.ptr = name;
|
||||
cg.name.len = len;
|
||||
cg.index = QSE_LDA_NIL;
|
||||
cg.walk = QSE_LDA_WALK_FORWARD;
|
||||
|
||||
/* return qse_lda_search (awk->parse.globals, 0, name, len); */
|
||||
/* return qse_lda_search (awk->parse.gbls, 0, name, len); */
|
||||
|
||||
qse_lda_walk (awk->parse.globals, check_global, &cg);
|
||||
qse_lda_walk (awk->parse.gbls, check_gbl, &cg);
|
||||
return cg.index;
|
||||
}
|
||||
|
||||
static int add_global (
|
||||
static int add_gbl (
|
||||
qse_awk_t* awk, const qse_char_t* name, qse_size_t len,
|
||||
qse_size_t line, int disabled)
|
||||
{
|
||||
qse_size_t nglobals;
|
||||
qse_size_t ngbls;
|
||||
|
||||
#if 0
|
||||
if (awk->option & QSE_AWK_UNIQUEFN)
|
||||
@ -1548,41 +1548,41 @@ static int add_global (
|
||||
#endif
|
||||
|
||||
/* check if it conflicts with other global variable names */
|
||||
if (find_global (awk, name, len) != QSE_LDA_NIL)
|
||||
if (find_gbl (awk, name, len) != QSE_LDA_NIL)
|
||||
{
|
||||
SETERRARG (awk, QSE_AWK_EDUPGBL, line, name, len);
|
||||
return -1;
|
||||
}
|
||||
|
||||
nglobals = QSE_LDA_SIZE (awk->parse.globals);
|
||||
if (nglobals >= QSE_AWK_MAX_GLOBALS)
|
||||
ngbls = QSE_LDA_SIZE (awk->parse.gbls);
|
||||
if (ngbls >= QSE_AWK_MAX_GBLS)
|
||||
{
|
||||
SETERRLIN (awk, QSE_AWK_EGBLTM, line);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (qse_lda_insert (awk->parse.globals,
|
||||
QSE_LDA_SIZE(awk->parse.globals),
|
||||
if (qse_lda_insert (awk->parse.gbls,
|
||||
QSE_LDA_SIZE(awk->parse.gbls),
|
||||
(qse_char_t*)name, len) == QSE_LDA_NIL)
|
||||
{
|
||||
SETERRLIN (awk, QSE_AWK_ENOMEM, line);
|
||||
return -1;
|
||||
}
|
||||
|
||||
QSE_ASSERT (nglobals == QSE_LDA_SIZE(awk->parse.globals) - 1);
|
||||
QSE_ASSERT (ngbls == QSE_LDA_SIZE(awk->parse.gbls) - 1);
|
||||
|
||||
/* the disabled item is inserted normally but
|
||||
* the name length is reset to zero. */
|
||||
if (disabled) QSE_LDA_DLEN(awk->parse.globals,nglobals) = 0;
|
||||
if (disabled) QSE_LDA_DLEN(awk->parse.gbls,ngbls) = 0;
|
||||
|
||||
awk->tree.nglobals = QSE_LDA_SIZE (awk->parse.globals);
|
||||
QSE_ASSERT (nglobals == awk->tree.nglobals-1);
|
||||
awk->tree.ngbls = QSE_LDA_SIZE (awk->parse.gbls);
|
||||
QSE_ASSERT (ngbls == awk->tree.ngbls-1);
|
||||
|
||||
/* return the id which is the index to the global table. */
|
||||
return (int)nglobals;
|
||||
/* return the id which is the index to the gbl table. */
|
||||
return (int)ngbls;
|
||||
}
|
||||
|
||||
int qse_awk_addglobal (
|
||||
int qse_awk_addgbl (
|
||||
qse_awk_t* awk, const qse_char_t* name, qse_size_t len)
|
||||
{
|
||||
int n;
|
||||
@ -1593,38 +1593,38 @@ int qse_awk_addglobal (
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (awk->tree.nglobals > awk->tree.nbglobals)
|
||||
if (awk->tree.ngbls > awk->tree.nbgbls)
|
||||
{
|
||||
/* this function is not allow after qse_awk_parse is called */
|
||||
SETERR (awk, QSE_AWK_ENOPER);
|
||||
return -1;
|
||||
}
|
||||
n = add_global (awk, name, len, 0, 0);
|
||||
n = add_gbl (awk, name, len, 0, 0);
|
||||
|
||||
/* update the count of the static globals.
|
||||
* the total global count has been updated inside add_global. */
|
||||
if (n >= 0) awk->tree.nbglobals++;
|
||||
/* update the count of the static gbls.
|
||||
* the total gbl count has been updated inside add_gbl. */
|
||||
if (n >= 0) awk->tree.nbgbls++;
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int qse_awk_delglobal (
|
||||
int qse_awk_delgbl (
|
||||
qse_awk_t* awk, const qse_char_t* name, qse_size_t len)
|
||||
{
|
||||
qse_size_t n;
|
||||
|
||||
#define QSE_AWK_NUM_STATIC_GLOBALS \
|
||||
(QSE_AWK_MAX_GLOBAL_ID-QSE_AWK_MIN_GLOBAL_ID+1)
|
||||
#define QSE_AWK_NUM_STATIC_GBLS \
|
||||
(QSE_AWK_MAX_GBL_ID-QSE_AWK_MIN_GBL_ID+1)
|
||||
|
||||
if (awk->tree.nglobals > awk->tree.nbglobals)
|
||||
if (awk->tree.ngbls > awk->tree.nbgbls)
|
||||
{
|
||||
/* this function is not allow after qse_awk_parse is called */
|
||||
SETERR (awk, QSE_AWK_ENOPER);
|
||||
return -1;
|
||||
}
|
||||
|
||||
n = qse_lda_search (awk->parse.globals,
|
||||
QSE_AWK_NUM_STATIC_GLOBALS, name, len);
|
||||
n = qse_lda_search (awk->parse.gbls,
|
||||
QSE_AWK_NUM_STATIC_GBLS, name, len);
|
||||
if (n == QSE_LDA_NIL)
|
||||
{
|
||||
SETERRARG (awk, QSE_AWK_ENOENT, 0, name, len);
|
||||
@ -1633,20 +1633,20 @@ int qse_awk_delglobal (
|
||||
|
||||
/* invalidate the name if deletion is requested.
|
||||
* this approach does not delete the entry.
|
||||
* if qse_awk_addglobal is called with the same name
|
||||
* if qse_awk_addgbl is called with the same name
|
||||
* again, the entry will be appended again.
|
||||
* never call this funciton unless it is really required. */
|
||||
/*
|
||||
awk->parse.globals.buf[n].name.ptr[0] = QSE_T('\0');
|
||||
awk->parse.globals.buf[n].name.len = 0;
|
||||
awk->parse.gbls.buf[n].name.ptr[0] = QSE_T('\0');
|
||||
awk->parse.gbls.buf[n].name.len = 0;
|
||||
*/
|
||||
n = qse_lda_uplete (awk->parse.globals, n, 1);
|
||||
n = qse_lda_uplete (awk->parse.gbls, n, 1);
|
||||
QSE_ASSERT (n == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static qse_awk_t* collect_globals (qse_awk_t* awk)
|
||||
static qse_awk_t* collect_gbls (qse_awk_t* awk)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
@ -1656,7 +1656,7 @@ static qse_awk_t* collect_globals (qse_awk_t* awk)
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
if (add_global (
|
||||
if (add_gbl (
|
||||
awk,
|
||||
QSE_STR_PTR(awk->token.name),
|
||||
QSE_STR_LEN(awk->token.name),
|
||||
@ -1681,10 +1681,10 @@ static qse_awk_t* collect_globals (qse_awk_t* awk)
|
||||
return awk;
|
||||
}
|
||||
|
||||
static qse_awk_t* collect_locals (
|
||||
qse_awk_t* awk, qse_size_t nlocals, qse_bool_t istop)
|
||||
static qse_awk_t* collect_lcls (
|
||||
qse_awk_t* awk, qse_size_t nlcls, qse_bool_t istop)
|
||||
{
|
||||
qse_xstr_t local;
|
||||
qse_xstr_t lcl;
|
||||
qse_size_t n;
|
||||
|
||||
while (1)
|
||||
@ -1695,8 +1695,8 @@ static qse_awk_t* collect_locals (
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
local.ptr = QSE_STR_PTR(awk->token.name);
|
||||
local.len = QSE_STR_LEN(awk->token.name);
|
||||
lcl.ptr = QSE_STR_PTR(awk->token.name);
|
||||
lcl.len = QSE_STR_LEN(awk->token.name);
|
||||
|
||||
#if 0
|
||||
if (awk->option & QSE_AWK_UNIQUEFN)
|
||||
@ -1705,12 +1705,12 @@ static qse_awk_t* collect_locals (
|
||||
#endif
|
||||
|
||||
/* check if it conflict with a builtin function name
|
||||
* function f() { local length; } */
|
||||
if (qse_awk_getfnc (awk, local.ptr, local.len) != QSE_NULL)
|
||||
* function f() { lcl length; } */
|
||||
if (qse_awk_getfnc (awk, lcl.ptr, lcl.len) != QSE_NULL)
|
||||
{
|
||||
SETERRARG (
|
||||
awk, QSE_AWK_EFNCRED, awk->token.line,
|
||||
local.ptr, local.len);
|
||||
lcl.ptr, lcl.len);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
@ -1720,25 +1720,25 @@ static qse_awk_t* collect_locals (
|
||||
{
|
||||
iscur = (qse_strxncmp (
|
||||
awk->tree.cur_fun.ptr, awk->tree.cur_fun.len,
|
||||
local.ptr, local.len) == 0);
|
||||
lcl.ptr, lcl.len) == 0);
|
||||
}
|
||||
|
||||
if (iscur || qse_map_search (awk->tree.funs, local.ptr, local.len) != QSE_NULL)
|
||||
if (iscur || qse_map_search (awk->tree.funs, lcl.ptr, lcl.len) != QSE_NULL)
|
||||
{
|
||||
SETERRARG (
|
||||
awk, QSE_AWK_EFUNRED, awk->token.line,
|
||||
local.ptr, local.len);
|
||||
lcl.ptr, lcl.len);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
/* check if it conflict with a function name
|
||||
* caught in the function call table */
|
||||
if (qse_map_search (awk->parse.funs,
|
||||
local.ptr, local.len) != QSE_NULL)
|
||||
lcl.ptr, lcl.len) != QSE_NULL)
|
||||
{
|
||||
SETERRARG (
|
||||
awk, QSE_AWK_EFUNRED, awk->token.line,
|
||||
local.ptr, local.len);
|
||||
lcl.ptr, lcl.len);
|
||||
return QSE_NULL;
|
||||
}
|
||||
}
|
||||
@ -1747,39 +1747,39 @@ static qse_awk_t* collect_locals (
|
||||
if (istop)
|
||||
{
|
||||
/* check if it conflicts with a paremeter name */
|
||||
n = qse_lda_search (awk->parse.params, 0, local.ptr, local.len);
|
||||
n = qse_lda_search (awk->parse.params, 0, lcl.ptr, lcl.len);
|
||||
if (n != QSE_LDA_NIL)
|
||||
{
|
||||
SETERRARG (
|
||||
awk, QSE_AWK_EPARRED, awk->token.line,
|
||||
local.ptr, local.len);
|
||||
lcl.ptr, lcl.len);
|
||||
return QSE_NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* check if it conflicts with other local variable names */
|
||||
n = qse_lda_search (
|
||||
awk->parse.locals,
|
||||
nlocals, /*((awk->option&QSE_AWK_SHADING)? nlocals:0)*/
|
||||
local.ptr, local.len);
|
||||
awk->parse.lcls,
|
||||
nlcls, /*((awk->option&QSE_AWK_SHADING)? nlcls:0)*/
|
||||
lcl.ptr, lcl.len);
|
||||
if (n != QSE_LDA_NIL)
|
||||
{
|
||||
SETERRARG (
|
||||
awk, QSE_AWK_EDUPLCL, awk->token.line,
|
||||
local.ptr, local.len);
|
||||
lcl.ptr, lcl.len);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
/* check if it conflicts with global variable names */
|
||||
n = find_global (awk, local.ptr, local.len);
|
||||
n = find_gbl (awk, lcl.ptr, lcl.len);
|
||||
if (n != QSE_LDA_NIL)
|
||||
{
|
||||
if (n < awk->tree.nbglobals)
|
||||
if (n < awk->tree.nbgbls)
|
||||
{
|
||||
/* conflicting with a static global variable */
|
||||
SETERRARG (
|
||||
awk, QSE_AWK_EDUPLCL, awk->token.line,
|
||||
local.ptr, local.len);
|
||||
lcl.ptr, lcl.len);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
@ -1789,22 +1789,22 @@ static qse_awk_t* collect_locals (
|
||||
/* conflicting with a normal global variable */
|
||||
SETERRARG (
|
||||
awk, QSE_AWK_EDUPLCL, awk->token.line,
|
||||
local.ptr, local.len);
|
||||
lcl.ptr, lcl.len);
|
||||
return QSE_NULL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (QSE_LDA_SIZE(awk->parse.locals) >= QSE_AWK_MAX_LOCALS)
|
||||
if (QSE_LDA_SIZE(awk->parse.lcls) >= QSE_AWK_MAX_LCLS)
|
||||
{
|
||||
SETERRLIN (awk, QSE_AWK_ELCLTM, awk->token.line);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
if (qse_lda_insert (
|
||||
awk->parse.locals,
|
||||
QSE_LDA_SIZE(awk->parse.locals),
|
||||
local.ptr, local.len) == QSE_LDA_NIL)
|
||||
awk->parse.lcls,
|
||||
QSE_LDA_SIZE(awk->parse.lcls),
|
||||
lcl.ptr, lcl.len) == QSE_LDA_NIL)
|
||||
{
|
||||
SETERRLIN (awk, QSE_AWK_ENOMEM, awk->token.line);
|
||||
return QSE_NULL;
|
||||
@ -3296,7 +3296,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
|
||||
if (nde == QSE_NULL) QSE_AWK_FREE (awk, name_dup);
|
||||
return (qse_awk_nde_t*)nde;
|
||||
}
|
||||
else if ((idxa = qse_lda_rsearch (awk->parse.locals, QSE_LDA_SIZE(awk->parse.locals), name_dup, name_len)) != QSE_LDA_NIL)
|
||||
else if ((idxa = qse_lda_rsearch (awk->parse.lcls, QSE_LDA_SIZE(awk->parse.lcls), name_dup, name_len)) != QSE_LDA_NIL)
|
||||
{
|
||||
/* local variable */
|
||||
|
||||
@ -3319,7 +3319,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
nde->type = QSE_AWK_NDE_LOCAL;
|
||||
nde->type = QSE_AWK_NDE_LCL;
|
||||
nde->line = line;
|
||||
nde->next = QSE_NULL;
|
||||
/*nde->id.name.ptr = QSE_NULL;*/
|
||||
@ -3364,7 +3364,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
|
||||
|
||||
return (qse_awk_nde_t*)nde;
|
||||
}
|
||||
else if ((idxa = get_global (awk, name_dup, name_len)) != QSE_LDA_NIL)
|
||||
else if ((idxa = get_gbl (awk, name_dup, name_len)) != QSE_LDA_NIL)
|
||||
{
|
||||
/* global variable */
|
||||
|
||||
@ -3387,7 +3387,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
nde->type = QSE_AWK_NDE_GLOBAL;
|
||||
nde->type = QSE_AWK_NDE_GBL;
|
||||
nde->line = line;
|
||||
nde->next = QSE_NULL;
|
||||
/*nde->id.name = QSE_NULL;*/
|
||||
@ -3570,10 +3570,15 @@ static qse_awk_nde_t* parse_hashidx (
|
||||
}
|
||||
|
||||
/* search the local variable list */
|
||||
idxa = qse_lda_rsearch (awk->parse.locals, QSE_LDA_SIZE(awk->parse.locals), name, name_len);
|
||||
idxa = qse_lda_rsearch (
|
||||
awk->parse.lcls,
|
||||
QSE_LDA_SIZE(awk->parse.lcls),
|
||||
name,
|
||||
name_len
|
||||
);
|
||||
if (idxa != QSE_LDA_NIL)
|
||||
{
|
||||
nde->type = QSE_AWK_NDE_LOCALIDX;
|
||||
nde->type = QSE_AWK_NDE_LCLIDX;
|
||||
nde->line = line;
|
||||
nde->next = QSE_NULL;
|
||||
/*nde->id.name = QSE_NULL; */
|
||||
@ -3602,10 +3607,10 @@ static qse_awk_nde_t* parse_hashidx (
|
||||
}
|
||||
|
||||
/* gets the global variable index */
|
||||
idxa = get_global (awk, name, name_len);
|
||||
idxa = get_gbl (awk, name, name_len);
|
||||
if (idxa != QSE_LDA_NIL)
|
||||
{
|
||||
nde->type = QSE_AWK_NDE_GLOBALIDX;
|
||||
nde->type = QSE_AWK_NDE_GBLIDX;
|
||||
nde->line = line;
|
||||
nde->next = QSE_NULL;
|
||||
/*nde->id.name = QSE_NULL;*/
|
||||
@ -5597,20 +5602,20 @@ static int assign_to_opcode (qse_awk_t* awk)
|
||||
|
||||
static int is_plain_var (qse_awk_nde_t* nde)
|
||||
{
|
||||
return nde->type == QSE_AWK_NDE_GLOBAL ||
|
||||
nde->type == QSE_AWK_NDE_LOCAL ||
|
||||
return nde->type == QSE_AWK_NDE_GBL ||
|
||||
nde->type == QSE_AWK_NDE_LCL ||
|
||||
nde->type == QSE_AWK_NDE_ARG ||
|
||||
nde->type == QSE_AWK_NDE_NAMED;
|
||||
}
|
||||
|
||||
static int is_var (qse_awk_nde_t* nde)
|
||||
{
|
||||
return nde->type == QSE_AWK_NDE_GLOBAL ||
|
||||
nde->type == QSE_AWK_NDE_LOCAL ||
|
||||
return nde->type == QSE_AWK_NDE_GBL ||
|
||||
nde->type == QSE_AWK_NDE_LCL ||
|
||||
nde->type == QSE_AWK_NDE_ARG ||
|
||||
nde->type == QSE_AWK_NDE_NAMED ||
|
||||
nde->type == QSE_AWK_NDE_GLOBALIDX ||
|
||||
nde->type == QSE_AWK_NDE_LOCALIDX ||
|
||||
nde->type == QSE_AWK_NDE_GBLIDX ||
|
||||
nde->type == QSE_AWK_NDE_LCLIDX ||
|
||||
nde->type == QSE_AWK_NDE_ARGIDX ||
|
||||
nde->type == QSE_AWK_NDE_NAMEDIDX;
|
||||
}
|
||||
@ -5666,11 +5671,11 @@ static int deparse (qse_awk_t* awk)
|
||||
|
||||
#define EXIT_DEPARSE() do { n = -1; goto exit_deparse; } while(0)
|
||||
|
||||
if (awk->tree.nglobals > awk->tree.nbglobals)
|
||||
if (awk->tree.ngbls > awk->tree.nbgbls)
|
||||
{
|
||||
qse_size_t i, len;
|
||||
|
||||
QSE_ASSERT (awk->tree.nglobals > 0);
|
||||
QSE_ASSERT (awk->tree.ngbls > 0);
|
||||
|
||||
qse_awk_getkw (awk, KW_GLOBAL, &kw);
|
||||
if (qse_awk_putsrcstrx(awk,kw.ptr,kw.len) == -1)
|
||||
@ -5682,7 +5687,7 @@ static int deparse (qse_awk_t* awk)
|
||||
EXIT_DEPARSE ();
|
||||
}
|
||||
|
||||
for (i = awk->tree.nbglobals; i < awk->tree.nglobals - 1; i++)
|
||||
for (i = awk->tree.nbgbls; i < awk->tree.ngbls - 1; i++)
|
||||
{
|
||||
if ((awk->option & QSE_AWK_EXPLICIT) &&
|
||||
!(awk->option & QSE_AWK_IMPLICIT))
|
||||
@ -5690,8 +5695,8 @@ static int deparse (qse_awk_t* awk)
|
||||
/* use the actual name if no named variable
|
||||
* is allowed */
|
||||
if (qse_awk_putsrcstrx (awk,
|
||||
QSE_LDA_DPTR(awk->parse.globals,i),
|
||||
QSE_LDA_DLEN(awk->parse.globals,i)) == -1)
|
||||
QSE_LDA_DPTR(awk->parse.gbls,i),
|
||||
QSE_LDA_DLEN(awk->parse.gbls,i)) == -1)
|
||||
{
|
||||
EXIT_DEPARSE ();
|
||||
}
|
||||
@ -5715,8 +5720,8 @@ static int deparse (qse_awk_t* awk)
|
||||
!(awk->option & QSE_AWK_IMPLICIT))
|
||||
{
|
||||
if (qse_awk_putsrcstrx (awk,
|
||||
QSE_LDA_DPTR(awk->parse.globals,i),
|
||||
QSE_LDA_DLEN(awk->parse.globals,i)) == -1)
|
||||
QSE_LDA_DPTR(awk->parse.gbls,i),
|
||||
QSE_LDA_DLEN(awk->parse.gbls,i)) == -1)
|
||||
{
|
||||
EXIT_DEPARSE ();
|
||||
}
|
||||
|
@ -55,12 +55,12 @@ int qse_awk_putsrcstr (qse_awk_t* awk, const qse_char_t* str);
|
||||
int qse_awk_putsrcstrx (
|
||||
qse_awk_t* awk, const qse_char_t* str, qse_size_t len);
|
||||
|
||||
const qse_char_t* qse_awk_rtx_getglobalname (
|
||||
const qse_char_t* qse_awk_rtx_getgblname (
|
||||
qse_awk_t* awk, qse_size_t idx, qse_size_t* len);
|
||||
qse_cstr_t* qse_awk_getkw (qse_awk_t* awk, int id, qse_cstr_t* s);
|
||||
|
||||
|
||||
int qse_awk_initglobals (qse_awk_t* awk);
|
||||
int qse_awk_initgbls (qse_awk_t* awk);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ static int split_record (qse_awk_rtx_t* run)
|
||||
QSE_ASSERT (run->inrec.nflds == 0);
|
||||
|
||||
/* get FS */
|
||||
fs = qse_awk_rtx_getglobal (run, QSE_AWK_GLOBAL_FS);
|
||||
fs = qse_awk_rtx_getgbl (run, QSE_AWK_GBL_FS);
|
||||
if (fs->type == QSE_AWK_VAL_NIL)
|
||||
{
|
||||
fs_ptr = QSE_T(" ");
|
||||
@ -143,7 +143,7 @@ static int split_record (qse_awk_rtx_t* run)
|
||||
else
|
||||
{
|
||||
p = qse_awk_strxntokbyrex (run, p, len,
|
||||
run->global.fs, &tok, &tok_len, &errnum);
|
||||
run->gbl.fs, &tok, &tok_len, &errnum);
|
||||
if (p == QSE_NULL && errnum != QSE_AWK_ENOERR)
|
||||
{
|
||||
if (fs_free != QSE_NULL)
|
||||
@ -200,7 +200,7 @@ static int split_record (qse_awk_rtx_t* run)
|
||||
else
|
||||
{
|
||||
p = qse_awk_strxntokbyrex (run, p, len,
|
||||
run->global.fs, &tok, &tok_len, &errnum);
|
||||
run->gbl.fs, &tok, &tok_len, &errnum);
|
||||
if (p == QSE_NULL && errnum != QSE_AWK_ENOERR)
|
||||
{
|
||||
if (fs_free != QSE_NULL)
|
||||
@ -237,7 +237,7 @@ static int split_record (qse_awk_rtx_t* run)
|
||||
if (v == QSE_NULL) return -1;
|
||||
|
||||
qse_awk_rtx_refupval (run, v);
|
||||
if (qse_awk_rtx_setglobal (run, QSE_AWK_GLOBAL_NF, v) == -1)
|
||||
if (qse_awk_rtx_setgbl (run, QSE_AWK_GBL_NF, v) == -1)
|
||||
{
|
||||
qse_awk_rtx_refdownval (run, v);
|
||||
return -1;
|
||||
@ -270,8 +270,8 @@ int qse_awk_rtx_clrrec (qse_awk_rtx_t* run, qse_bool_t skip_inrec_line)
|
||||
}
|
||||
run->inrec.nflds = 0;
|
||||
|
||||
if (qse_awk_rtx_setglobal (
|
||||
run, QSE_AWK_GLOBAL_NF, qse_awk_val_zero) == -1)
|
||||
if (qse_awk_rtx_setgbl (
|
||||
run, QSE_AWK_GBL_NF, qse_awk_val_zero) == -1)
|
||||
{
|
||||
/* first of all, this should never happen.
|
||||
* if it happened, it would return an error
|
||||
@ -352,8 +352,8 @@ static int recomp_record_fields (
|
||||
{
|
||||
if (qse_str_ncat (
|
||||
&run->inrec.line,
|
||||
run->global.ofs.ptr,
|
||||
run->global.ofs.len) == (qse_size_t)-1)
|
||||
run->gbl.ofs.ptr,
|
||||
run->gbl.ofs.len) == (qse_size_t)-1)
|
||||
{
|
||||
qse_awk_rtx_seterror (
|
||||
run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0);
|
||||
@ -432,7 +432,7 @@ static int recomp_record_fields (
|
||||
}
|
||||
}
|
||||
|
||||
v = qse_awk_rtx_getglobal (run, QSE_AWK_GLOBAL_NF);
|
||||
v = qse_awk_rtx_getgbl (run, QSE_AWK_GBL_NF);
|
||||
QSE_ASSERT (v->type == QSE_AWK_VAL_INT);
|
||||
|
||||
if (((qse_awk_val_int_t*)v)->val != max)
|
||||
@ -441,7 +441,7 @@ static int recomp_record_fields (
|
||||
if (v == QSE_NULL) return -1;
|
||||
|
||||
qse_awk_rtx_refupval (run, v);
|
||||
if (qse_awk_rtx_setglobal (run, QSE_AWK_GLOBAL_NF, v) == -1)
|
||||
if (qse_awk_rtx_setgbl (run, QSE_AWK_GBL_NF, v) == -1)
|
||||
{
|
||||
qse_awk_rtx_refdownval (run, v);
|
||||
return -1;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -671,8 +671,8 @@ static qse_ssize_t awk_eio_console (
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (qse_awk_rtx_setglobal (
|
||||
epa->rtx, QSE_AWK_GLOBAL_FNR, qse_awk_val_zero) == -1)
|
||||
if (qse_awk_rtx_setgbl (
|
||||
epa->rtx, QSE_AWK_GBL_FNR, qse_awk_val_zero) == -1)
|
||||
{
|
||||
/* need to reset FNR */
|
||||
qse_sio_close (fp);
|
||||
@ -1184,24 +1184,24 @@ skip_system:
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define ADD_FUNC(awk,name,min,max,fnc) \
|
||||
#define ADDFNC(awk,name,min,max,fnc) \
|
||||
if (qse_awk_addfnc (\
|
||||
(awk), (name), qse_strlen(name), \
|
||||
0, (min), (max), QSE_NULL, (fnc)) == QSE_NULL) return -1;
|
||||
|
||||
static int add_functions (qse_awk_t* awk)
|
||||
{
|
||||
ADD_FUNC (awk, QSE_T("sin"), 1, 1, fnc_sin);
|
||||
ADD_FUNC (awk, QSE_T("cos"), 1, 1, fnc_cos);
|
||||
ADD_FUNC (awk, QSE_T("tan"), 1, 1, fnc_tan);
|
||||
ADD_FUNC (awk, QSE_T("atan"), 1, 1, fnc_atan);
|
||||
ADD_FUNC (awk, QSE_T("atan2"), 2, 2, fnc_atan2);
|
||||
ADD_FUNC (awk, QSE_T("log"), 1, 1, fnc_log);
|
||||
ADD_FUNC (awk, QSE_T("exp"), 1, 1, fnc_exp);
|
||||
ADD_FUNC (awk, QSE_T("sqrt"), 1, 1, fnc_sqrt);
|
||||
ADD_FUNC (awk, QSE_T("int"), 1, 1, fnc_int);
|
||||
ADD_FUNC (awk, QSE_T("rand"), 0, 0, fnc_rand);
|
||||
ADD_FUNC (awk, QSE_T("srand"), 0, 1, fnc_srand);
|
||||
ADD_FUNC (awk, QSE_T("system"), 1, 1, fnc_system);
|
||||
ADDFNC (awk, QSE_T("sin"), 1, 1, fnc_sin);
|
||||
ADDFNC (awk, QSE_T("cos"), 1, 1, fnc_cos);
|
||||
ADDFNC (awk, QSE_T("tan"), 1, 1, fnc_tan);
|
||||
ADDFNC (awk, QSE_T("atan"), 1, 1, fnc_atan);
|
||||
ADDFNC (awk, QSE_T("atan2"), 2, 2, fnc_atan2);
|
||||
ADDFNC (awk, QSE_T("log"), 1, 1, fnc_log);
|
||||
ADDFNC (awk, QSE_T("exp"), 1, 1, fnc_exp);
|
||||
ADDFNC (awk, QSE_T("sqrt"), 1, 1, fnc_sqrt);
|
||||
ADDFNC (awk, QSE_T("int"), 1, 1, fnc_int);
|
||||
ADDFNC (awk, QSE_T("rand"), 0, 0, fnc_rand);
|
||||
ADDFNC (awk, QSE_T("srand"), 0, 1, fnc_srand);
|
||||
ADDFNC (awk, QSE_T("system"), 1, 1, fnc_system);
|
||||
return 0;
|
||||
}
|
||||
|
@ -401,7 +401,7 @@ static int print_expression (qse_awk_t* awk, qse_awk_nde_t* nde)
|
||||
break;
|
||||
}
|
||||
|
||||
case QSE_AWK_NDE_GLOBAL:
|
||||
case QSE_AWK_NDE_GBL:
|
||||
{
|
||||
qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde;
|
||||
|
||||
@ -415,7 +415,7 @@ static int print_expression (qse_awk_t* awk, qse_awk_nde_t* nde)
|
||||
* use the actual name */
|
||||
PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len);
|
||||
}
|
||||
else if (px->id.idxa < awk->tree.nbglobals)
|
||||
else if (px->id.idxa < awk->tree.nbgbls)
|
||||
{
|
||||
/* static global variables */
|
||||
PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len);
|
||||
@ -440,7 +440,7 @@ static int print_expression (qse_awk_t* awk, qse_awk_nde_t* nde)
|
||||
break;
|
||||
}
|
||||
|
||||
case QSE_AWK_NDE_GLOBALIDX:
|
||||
case QSE_AWK_NDE_GBLIDX:
|
||||
{
|
||||
qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde;
|
||||
|
||||
@ -453,7 +453,7 @@ static int print_expression (qse_awk_t* awk, qse_awk_nde_t* nde)
|
||||
* use the actual name */
|
||||
PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len);
|
||||
}
|
||||
else if (px->id.idxa < awk->tree.nbglobals)
|
||||
else if (px->id.idxa < awk->tree.nbgbls)
|
||||
{
|
||||
/* static global variables */
|
||||
PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len);
|
||||
@ -482,7 +482,7 @@ static int print_expression (qse_awk_t* awk, qse_awk_nde_t* nde)
|
||||
break;
|
||||
}
|
||||
|
||||
case QSE_AWK_NDE_LOCAL:
|
||||
case QSE_AWK_NDE_LCL:
|
||||
{
|
||||
qse_size_t n;
|
||||
qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde;
|
||||
@ -503,7 +503,7 @@ static int print_expression (qse_awk_t* awk, qse_awk_nde_t* nde)
|
||||
break;
|
||||
}
|
||||
|
||||
case QSE_AWK_NDE_LOCALIDX:
|
||||
case QSE_AWK_NDE_LCLIDX:
|
||||
{
|
||||
qse_size_t n;
|
||||
qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde;
|
||||
@ -636,14 +636,14 @@ static int print_statement (qse_awk_t* awk, qse_awk_nde_t* p, int depth)
|
||||
PUT_SRCSTR (awk, QSE_T("{"));
|
||||
PUT_NEWLINE (awk);
|
||||
|
||||
if (px->nlocals > 0)
|
||||
if (px->nlcls > 0)
|
||||
{
|
||||
PRINT_TABS (awk, depth + 1);
|
||||
qse_awk_getkw (awk, KW_LOCAL, &kw);
|
||||
PUT_SRCSTRX (awk, kw.ptr, kw.len);
|
||||
PUT_SRCSTR (awk, QSE_T(" "));
|
||||
|
||||
for (i = 0; i < px->nlocals - 1; i++)
|
||||
for (i = 0; i < px->nlcls - 1; i++)
|
||||
{
|
||||
PUT_SRCSTR (awk, QSE_T("__l"));
|
||||
n = qse_awk_longtostr (
|
||||
@ -1223,8 +1223,8 @@ void qse_awk_clrpt (qse_awk_t* awk, qse_awk_nde_t* tree)
|
||||
}
|
||||
|
||||
case QSE_AWK_NDE_NAMED:
|
||||
case QSE_AWK_NDE_GLOBAL:
|
||||
case QSE_AWK_NDE_LOCAL:
|
||||
case QSE_AWK_NDE_GBL:
|
||||
case QSE_AWK_NDE_LCL:
|
||||
case QSE_AWK_NDE_ARG:
|
||||
{
|
||||
qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)p;
|
||||
@ -1236,8 +1236,8 @@ void qse_awk_clrpt (qse_awk_t* awk, qse_awk_nde_t* tree)
|
||||
}
|
||||
|
||||
case QSE_AWK_NDE_NAMEDIDX:
|
||||
case QSE_AWK_NDE_GLOBALIDX:
|
||||
case QSE_AWK_NDE_LOCALIDX:
|
||||
case QSE_AWK_NDE_GBLIDX:
|
||||
case QSE_AWK_NDE_LCLIDX:
|
||||
case QSE_AWK_NDE_ARGIDX:
|
||||
{
|
||||
qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)p;
|
||||
|
@ -63,12 +63,12 @@ enum qse_awk_nde_type_t
|
||||
* to change eval_incpre and eval_incpst in run.c as well as
|
||||
* QSE_AWK_VAL_REF_XXX in awk.h */
|
||||
QSE_AWK_NDE_NAMED,
|
||||
QSE_AWK_NDE_GLOBAL,
|
||||
QSE_AWK_NDE_LOCAL,
|
||||
QSE_AWK_NDE_GBL,
|
||||
QSE_AWK_NDE_LCL,
|
||||
QSE_AWK_NDE_ARG,
|
||||
QSE_AWK_NDE_NAMEDIDX,
|
||||
QSE_AWK_NDE_GLOBALIDX,
|
||||
QSE_AWK_NDE_LOCALIDX,
|
||||
QSE_AWK_NDE_GBLIDX,
|
||||
QSE_AWK_NDE_LCLIDX,
|
||||
QSE_AWK_NDE_ARGIDX,
|
||||
QSE_AWK_NDE_POS,
|
||||
/* ---------------------------------- */
|
||||
@ -162,7 +162,7 @@ struct qse_awk_nde_t
|
||||
struct qse_awk_nde_blk_t
|
||||
{
|
||||
QSE_AWK_NDE_HDR;
|
||||
qse_size_t nlocals;
|
||||
qse_size_t nlcls;
|
||||
qse_awk_nde_t* body;
|
||||
};
|
||||
|
||||
@ -243,10 +243,10 @@ struct qse_awk_nde_rex_t
|
||||
void* code;
|
||||
};
|
||||
|
||||
/* QSE_AWK_NDE_NAMED, QSE_AWK_NDE_GLOBAL,
|
||||
* QSE_AWK_NDE_LOCAL, QSE_AWK_NDE_ARG
|
||||
* QSE_AWK_NDE_NAMEDIDX, QSE_AWK_NDE_GLOBALIDX,
|
||||
* QSE_AWK_NDE_LOCALIDX, QSE_AWK_NDE_ARGIDX */
|
||||
/* QSE_AWK_NDE_NAMED, QSE_AWK_NDE_GBL,
|
||||
* QSE_AWK_NDE_LCL, QSE_AWK_NDE_ARG
|
||||
* QSE_AWK_NDE_NAMEDIDX, QSE_AWK_NDE_GBLIDX,
|
||||
* QSE_AWK_NDE_LCLIDX, QSE_AWK_NDE_ARGIDX */
|
||||
struct qse_awk_nde_var_t
|
||||
{
|
||||
QSE_AWK_NDE_HDR;
|
||||
|
@ -1002,13 +1002,13 @@ static qse_char_t* val_real_to_str (
|
||||
|
||||
if (opt & QSE_AWK_VALTOSTR_PRINT)
|
||||
{
|
||||
tmp = run->global.ofmt.ptr;
|
||||
tmp_len = run->global.ofmt.len;
|
||||
tmp = run->gbl.ofmt.ptr;
|
||||
tmp_len = run->gbl.ofmt.len;
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = run->global.convfmt.ptr;
|
||||
tmp_len = run->global.convfmt.len;
|
||||
tmp = run->gbl.convfmt.ptr;
|
||||
tmp_len = run->gbl.convfmt.len;
|
||||
}
|
||||
|
||||
if (qse_str_init (&out, run->awk->mmgr, 256) == QSE_NULL)
|
||||
|
Reference in New Issue
Block a user