*** empty log message ***
This commit is contained in:
parent
a460e95750
commit
b9931446a4
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.c,v 1.112 2007-03-02 10:12:40 bacon Exp $
|
||||
* $Id: awk.c,v 1.113 2007-03-04 06:26:45 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -215,6 +215,8 @@ int ase_awk_clear (ase_awk_t* awk)
|
||||
awk->tree.ok = 0;
|
||||
awk->tree.nbglobals = 0;
|
||||
awk->tree.nglobals = 0;
|
||||
awk->tree.cur_afn.ptr = ASE_NULL;
|
||||
awk->tree.cur_afn.len = 0;
|
||||
ase_awk_map_clear (&awk->tree.afns);
|
||||
|
||||
if (awk->tree.begin != ASE_NULL)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.h,v 1.198 2007-03-03 14:44:31 bacon Exp $
|
||||
* $Id: awk.h,v 1.199 2007-03-04 06:26:45 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -261,6 +261,7 @@ enum
|
||||
ASE_AWK_EWHILE, /* keyword 'while' is expected */
|
||||
ASE_AWK_EASSIGN, /* assignment statement expected */
|
||||
ASE_AWK_EIDENT, /* identifier expected */
|
||||
ASE_AWK_EFNNAME, /* invalid function name */
|
||||
ASE_AWK_EBLKBEG, /* BEGIN requires an action block */
|
||||
ASE_AWK_EBLKEND, /* END requires an action block */
|
||||
ASE_AWK_EDUPBEG, /* duplicate BEGIN */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk_i.h,v 1.108 2007-03-03 14:44:31 bacon Exp $
|
||||
* $Id: awk_i.h,v 1.109 2007-03-04 06:26:45 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -65,6 +65,7 @@ struct ase_awk_tree_t
|
||||
{
|
||||
ase_size_t nglobals; /* total number of globals */
|
||||
ase_size_t nbglobals; /* number of builtin globals */
|
||||
ase_cstr_t cur_afn;
|
||||
ase_awk_map_t afns; /* awk function map */
|
||||
ase_awk_nde_t* begin;
|
||||
ase_awk_nde_t* end;
|
||||
@ -192,6 +193,11 @@ struct ase_awk_t
|
||||
} depth;
|
||||
} rex;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_char_t* fmt[1024];
|
||||
} tmp;
|
||||
|
||||
/* housekeeping */
|
||||
int errnum;
|
||||
ase_size_t errlin;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: err.c,v 1.79 2007-03-03 14:44:31 bacon Exp $
|
||||
* $Id: err.c,v 1.80 2007-03-04 06:26:45 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -74,17 +74,18 @@ static const ase_char_t* __geterrstr (int errnum)
|
||||
ASE_T("keyword 'while' expected"),
|
||||
ASE_T("assignment statement expected"),
|
||||
ASE_T("identifier expected"),
|
||||
ASE_T("'%.*s' not a valid function name"),
|
||||
ASE_T("BEGIN requires an action block"),
|
||||
ASE_T("END requires an action block"),
|
||||
ASE_T("duplicate BEGIN"),
|
||||
ASE_T("duplicate END"),
|
||||
ASE_T("built-in function redefined"),
|
||||
ASE_T("function redefined"),
|
||||
ASE_T("global variable redefined"),
|
||||
ASE_T("parameter redefined"),
|
||||
ASE_T("duplicate parameter name"),
|
||||
ASE_T("duplicate global variable name"),
|
||||
ASE_T("duplicate local variable name"),
|
||||
ASE_T("built-in function '%.*s' redefined"),
|
||||
ASE_T("function '%.*s' redefined"),
|
||||
ASE_T("global variable '%.*s' redefined"),
|
||||
ASE_T("parameter '%.*s' redefined"),
|
||||
ASE_T("duplicate parameter name '%.*s'"),
|
||||
ASE_T("duplicate global variable '%.*s'"),
|
||||
ASE_T("duplicate local variable '%.*s'"),
|
||||
ASE_T("undefined identifier"),
|
||||
ASE_T("l-value required"),
|
||||
ASE_T("too many global variables"),
|
||||
|
222
ase/awk/parse.c
222
ase/awk/parse.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: parse.c,v 1.248 2007-03-03 13:22:00 bacon Exp $
|
||||
* $Id: parse.c,v 1.249 2007-03-04 06:26:45 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -126,6 +126,9 @@ struct __binmap_t
|
||||
int binop;
|
||||
};
|
||||
|
||||
#define PTR_EOF ASE_T("<EOF>")
|
||||
#define LEN_EOF 5
|
||||
|
||||
static int __parse (ase_awk_t* awk);
|
||||
|
||||
static ase_awk_t* __parse_progunit (ase_awk_t* awk);
|
||||
@ -710,25 +713,21 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
if (!MATCH(awk,TOKEN_IDENT))
|
||||
{
|
||||
/* cannot find a valid identifier for a function name */
|
||||
ase_cstr_t errarg;
|
||||
|
||||
if (MATCH(awk,TOKEN_EOF))
|
||||
{
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_EIDENT, awk->token.prev.line,
|
||||
ASE_T("function definition without a name"));
|
||||
errarg.ptr = PTR_EOF;
|
||||
errarg.len = LEN_EOF;
|
||||
}
|
||||
else
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("'%.*s' not a valid function name"),
|
||||
ASE_STR_LEN(&awk->token.name),
|
||||
ASE_STR_BUF(&awk->token.name));
|
||||
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_EIDENT, awk->token.line,
|
||||
awk->errmsg);
|
||||
errarg.ptr = ASE_STR_BUF(&awk->token.name);
|
||||
errarg.len = ASE_STR_LEN(&awk->token.name);
|
||||
}
|
||||
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EFNNAME, awk->token.line, &errarg, 1);
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
@ -738,15 +737,13 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
/* check if it is a builtin function */
|
||||
if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("built-in function '%.*s' redefined"),
|
||||
name_len, name);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
errarg.ptr = name;
|
||||
errarg.len = name_len;
|
||||
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_EBFNRED, awk->token.line,
|
||||
awk->errmsg);
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EBFNRED, awk->token.line, &errarg, 1);
|
||||
|
||||
return ASE_NULL;
|
||||
}
|
||||
@ -754,15 +751,13 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
if (ase_awk_map_get(&awk->tree.afns, name, name_len) != ASE_NULL)
|
||||
{
|
||||
/* the function is defined previously */
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("function '%.*s' redefined"),
|
||||
name_len, name);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
errarg.ptr = name;
|
||||
errarg.len = name_len;
|
||||
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_EAFNRED, awk->token.line,
|
||||
awk->errmsg);
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EAFNRED, awk->token.line, &errarg, 1);
|
||||
|
||||
return ASE_NULL;
|
||||
}
|
||||
@ -775,15 +770,14 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
g = ase_awk_tab_find (&awk->parse.globals, 0, name, name_len);
|
||||
if (g != (ase_size_t)-1)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("global variable '%.*s' redefined"),
|
||||
name_len, name);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
errarg.ptr = name;
|
||||
errarg.len = name_len;
|
||||
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_EGBLRED, awk->token.line,
|
||||
awk->errmsg);
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EGBLRED, awk->token.line,
|
||||
&errarg, 1);
|
||||
|
||||
return ASE_NULL;
|
||||
}
|
||||
@ -793,8 +787,8 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
name_dup = ase_strxdup (name, name_len, &awk->prmfns.mmgr);
|
||||
if (name_dup == ASE_NULL)
|
||||
{
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL);
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL, 0);
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
@ -887,18 +881,17 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
if (ase_strxncmp (name_dup, name_len, param, param_len) == 0 ||
|
||||
ase_awk_map_get (&awk->tree.afns, param, param_len) != ASE_NULL)
|
||||
{
|
||||
ase_cstr_t errarg;
|
||||
|
||||
ASE_AWK_FREE (awk, name_dup);
|
||||
ase_awk_tab_clear (&awk->parse.params);
|
||||
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("conflicting parameter '%.*s' with the function"),
|
||||
param_len, param);
|
||||
errarg.ptr = param;
|
||||
errarg.len = param_len;
|
||||
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_EDUPPAR, awk->token.line,
|
||||
awk->errmsg);
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EAFNRED, awk->token.line,
|
||||
&errarg, 1);
|
||||
|
||||
return ASE_NULL;
|
||||
}
|
||||
@ -915,18 +908,17 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
&awk->parse.params,
|
||||
0, param, param_len) != (ase_size_t)-1)
|
||||
{
|
||||
ase_cstr_t errarg;
|
||||
|
||||
ASE_AWK_FREE (awk, name_dup);
|
||||
ase_awk_tab_clear (&awk->parse.params);
|
||||
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("duplicate parameter '%.*s'"),
|
||||
param_len, param);
|
||||
errarg.ptr = param;
|
||||
errarg.len = param_len;
|
||||
|
||||
ase_awk_seterror_old (
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EDUPPAR, awk->token.line,
|
||||
awk->errmsg);
|
||||
&errarg, 1);
|
||||
|
||||
return ASE_NULL;
|
||||
}
|
||||
@ -1028,8 +1020,18 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
/* remember the current function name so that the body parser
|
||||
* can know the name of the current function being parsed */
|
||||
awk->tree.cur_afn.ptr = name_dup;
|
||||
awk->tree.cur_afn.len = name_len;
|
||||
|
||||
/* actual function body */
|
||||
body = awk->parse.parse_block (awk, awk->token.prev.line, ase_true);
|
||||
|
||||
/* clear the current function name remembered */
|
||||
awk->tree.cur_afn.ptr = ASE_NULL;
|
||||
awk->tree.cur_afn.len = 0;
|
||||
|
||||
if (body == ASE_NULL)
|
||||
{
|
||||
ASE_AWK_FREE (awk, name_dup);
|
||||
@ -1067,8 +1069,8 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
|
||||
ase_awk_clrpt (awk, body);
|
||||
ASE_AWK_FREE (awk, afn);
|
||||
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL);
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL, 0);
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
@ -1351,13 +1353,15 @@ static ase_awk_t* __add_global (
|
||||
/* check if it conflict with a builtin function name */
|
||||
if (ase_awk_getbfn (awk, name, len) != ASE_NULL)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("built-in function '%.*s' redefined"),
|
||||
len, name);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
errarg.ptr = name;
|
||||
errarg.len = len;
|
||||
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EBFNRED, awk->token.line,
|
||||
&errarg, 1);
|
||||
|
||||
ase_awk_seterror_old (awk, ASE_AWK_EBFNRED, line, awk->errmsg);
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
@ -1365,13 +1369,14 @@ static ase_awk_t* __add_global (
|
||||
if (ase_awk_map_get (
|
||||
&awk->tree.afns, name, len) != ASE_NULL)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("function '%.*s' redefined"),
|
||||
len, name);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
errarg.ptr = name;
|
||||
errarg.len = len;
|
||||
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EAFNRED, line, &errarg, 1);
|
||||
|
||||
ase_awk_seterror_old (awk, ASE_AWK_EAFNRED, line, awk->errmsg);
|
||||
return ASE_NULL;
|
||||
}
|
||||
}
|
||||
@ -1380,13 +1385,14 @@ static ase_awk_t* __add_global (
|
||||
if (ase_awk_tab_find (
|
||||
&awk->parse.globals, 0, name, len) != (ase_size_t)-1)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("duplicate global variable '%.*s'"),
|
||||
len, name);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
errarg.ptr = name;
|
||||
errarg.len = len;
|
||||
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EDUPGBL, line, &errarg, 1);
|
||||
|
||||
ase_awk_seterror_old (awk, ASE_AWK_EDUPGBL, line, awk->errmsg);
|
||||
return ASE_NULL;
|
||||
}
|
||||
}
|
||||
@ -1504,31 +1510,34 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
|
||||
/* check if it conflict with a builtin function name */
|
||||
if (ase_awk_getbfn (awk, local, local_len) != ASE_NULL)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("built-in function '%.*s' redefined"),
|
||||
local_len, local);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
errarg.ptr = local;
|
||||
errarg.len = local_len;
|
||||
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EBFNRED, awk->token.line,
|
||||
&errarg, 1);
|
||||
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_EBFNRED, awk->token.line,
|
||||
awk->errmsg);
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
/* check if it conflict with a function name */
|
||||
if (ase_awk_map_get (
|
||||
&awk->tree.afns, local, local_len) != ASE_NULL)
|
||||
if (ase_strxncmp (
|
||||
awk->tree.cur_afn.ptr, awk->tree.cur_afn.len,
|
||||
local, local_len) == 0 ||
|
||||
ase_awk_map_get (
|
||||
&awk->tree.afns, local, local_len) != ASE_NULL)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("function '%.*s' redefined"),
|
||||
local_len, local);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
ase_awk_seterror_old (
|
||||
errarg.ptr = local;
|
||||
errarg.len = local_len;
|
||||
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EAFNRED, awk->token.line,
|
||||
awk->errmsg);
|
||||
&errarg, 1);
|
||||
|
||||
return ASE_NULL;
|
||||
}
|
||||
}
|
||||
@ -1537,15 +1546,15 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
|
||||
if (ase_awk_tab_find (&awk->parse.params,
|
||||
0, local, local_len) != (ase_size_t)-1)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("parameter '%.*s' redefined"),
|
||||
local_len, local);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
ase_awk_seterror_old (
|
||||
errarg.ptr = local;
|
||||
errarg.len = local_len;
|
||||
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EPARRED, awk->token.line,
|
||||
awk->errmsg);
|
||||
&errarg, 1);
|
||||
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
@ -1554,14 +1563,15 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
|
||||
((awk->option & ASE_AWK_SHADING)? nlocals: 0),
|
||||
local, local_len) != (ase_size_t)-1)
|
||||
{
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
awk->errmsg, ASE_COUNTOF(awk->errmsg),
|
||||
ASE_T("duplicate local variable '%.*s'"),
|
||||
local_len, local);
|
||||
ase_cstr_t errarg;
|
||||
|
||||
errarg.ptr = local;
|
||||
errarg.len = local_len;
|
||||
|
||||
ase_awk_seterror (
|
||||
awk, ASE_AWK_EDUPLCL, awk->token.line,
|
||||
&errarg, 1);
|
||||
|
||||
ase_awk_seterror_old (
|
||||
awk, ASE_AWK_EDUPLCL, awk->token.line, awk->errmsg);
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: run.c,v 1.338 2007-03-03 14:44:31 bacon Exp $
|
||||
* $Id: run.c,v 1.339 2007-03-04 06:26:45 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -2344,7 +2344,8 @@ static int __run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde)
|
||||
errarg.ptr = var->id.name;
|
||||
errarg.len = var->id.name_len;
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOTDEL, var->line, &errarg, 1);
|
||||
run, ASE_AWK_ENOTDEL, var->line,
|
||||
&errarg, 1);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: tree.c,v 1.104 2007-02-24 14:31:44 bacon Exp $
|
||||
* $Id: tree.c,v 1.105 2007-03-04 06:26:45 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -236,14 +236,13 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
|
||||
{
|
||||
if (((ase_awk_nde_int_t*)nde)->str == ASE_NULL)
|
||||
{
|
||||
ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2];
|
||||
ase_size_t n;
|
||||
|
||||
n = ase_awk_longtostr (
|
||||
((ase_awk_nde_int_t*)nde)->val,
|
||||
10, ASE_NULL, tmp, ASE_COUNTOF(tmp));
|
||||
((ase_awk_nde_int_t*)nde)->val, 10, ASE_NULL,
|
||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
||||
|
||||
PUT_SRCSTRX (awk, tmp, n);
|
||||
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -258,21 +257,20 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
|
||||
{
|
||||
if (((ase_awk_nde_real_t*)nde)->str == ASE_NULL)
|
||||
{
|
||||
ase_char_t tmp[256];
|
||||
#if (ASE_SIZEOF_LONG_DOUBLE != 0)
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
tmp, ASE_COUNTOF(tmp), ASE_T("%Lf"),
|
||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%Lf"),
|
||||
(long double)((ase_awk_nde_real_t*)nde)->val);
|
||||
#elif (ASE_SIZEOF_DOUBLE != 0)
|
||||
awk->prmfns.misc.sprintf (
|
||||
awk->prmfns.misc.custom_data,
|
||||
tmp, ASE_COUNTOF(tmp), ASE_T("%f"),
|
||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%f"),
|
||||
(double)((ase_awk_nde_real_t*)nde)->val);
|
||||
#else
|
||||
#error unsupported floating-point data type
|
||||
#endif
|
||||
PUT_SRCSTR (awk, tmp);
|
||||
PUT_SRCSTR (awk, awk->tmp.fmt);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -343,7 +341,6 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
|
||||
|
||||
case ASE_AWK_NDE_ARGIDX:
|
||||
{
|
||||
ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2];
|
||||
ase_size_t n;
|
||||
ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde;
|
||||
ASE_AWK_ASSERT (awk, px->id.idxa != (ase_size_t)-1);
|
||||
@ -351,8 +348,9 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
|
||||
|
||||
PUT_SRCSTR (awk, ASE_T("__param"));
|
||||
n = ase_awk_longtostr (
|
||||
px->id.idxa, 10, ASE_NULL, tmp, ASE_COUNTOF(tmp));
|
||||
PUT_SRCSTRX (awk, tmp, n);
|
||||
px->id.idxa, 10, ASE_NULL,
|
||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
||||
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
||||
PUT_SRCSTR (awk, ASE_T("["));
|
||||
PRINT_EXPRESSION_LIST (awk, px->idx);
|
||||
PUT_SRCSTR (awk, ASE_T("]"));
|
||||
@ -438,7 +436,6 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
|
||||
|
||||
case ASE_AWK_NDE_LOCAL:
|
||||
{
|
||||
ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2];
|
||||
ase_size_t n;
|
||||
ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde;
|
||||
|
||||
@ -446,9 +443,9 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
|
||||
{
|
||||
PUT_SRCSTR (awk, ASE_T("__local"));
|
||||
n = ase_awk_longtostr (
|
||||
px->id.idxa, 10,
|
||||
ASE_NULL, tmp, ASE_COUNTOF(tmp));
|
||||
PUT_SRCSTRX (awk, tmp, n);
|
||||
px->id.idxa, 10, ASE_NULL,
|
||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
||||
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -460,7 +457,6 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
|
||||
|
||||
case ASE_AWK_NDE_LOCALIDX:
|
||||
{
|
||||
ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2];
|
||||
ase_size_t n;
|
||||
ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde;
|
||||
|
||||
@ -468,9 +464,9 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
|
||||
{
|
||||
PUT_SRCSTR (awk, ASE_T("__local"));
|
||||
n = ase_awk_longtostr (
|
||||
px->id.idxa, 10,
|
||||
ASE_NULL, tmp, ASE_COUNTOF(tmp));
|
||||
PUT_SRCSTRX (awk, tmp, n);
|
||||
px->id.idxa, 10, ASE_NULL,
|
||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
||||
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
||||
PUT_SRCSTR (awk, ASE_T("["));
|
||||
}
|
||||
else
|
||||
@ -587,7 +583,6 @@ static int __print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth)
|
||||
|
||||
case ASE_AWK_NDE_BLK:
|
||||
{
|
||||
ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2];
|
||||
ase_size_t n;
|
||||
ase_awk_nde_blk_t* px = (ase_awk_nde_blk_t*)p;
|
||||
|
||||
@ -604,15 +599,17 @@ static int __print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth)
|
||||
{
|
||||
PUT_SRCSTR (awk, ASE_T("__local"));
|
||||
n = ase_awk_longtostr (
|
||||
i, 10, ASE_NULL, tmp, ASE_COUNTOF(tmp));
|
||||
PUT_SRCSTRX (awk, tmp, n);
|
||||
i, 10, ASE_NULL,
|
||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
||||
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
||||
PUT_SRCSTR (awk, ASE_T(", "));
|
||||
}
|
||||
|
||||
PUT_SRCSTR (awk, ASE_T("__local"));
|
||||
n = ase_awk_longtostr (
|
||||
i, 10, ASE_NULL, tmp, ASE_COUNTOF(tmp));
|
||||
PUT_SRCSTRX (awk, tmp, n);
|
||||
i, 10, ASE_NULL,
|
||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
||||
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
||||
PUT_SRCSTR (awk, ASE_T(";"));
|
||||
PUT_NEWLINE (awk);
|
||||
}
|
||||
|
4
ase/test/awk/err-007.awk
Normal file
4
ase/test/awk/err-007.awk
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
function substr ()
|
||||
{
|
||||
}
|
6
ase/test/awk/err-008.awk
Normal file
6
ase/test/awk/err-008.awk
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
BEGIN {
|
||||
local substr;
|
||||
substr = 20;
|
||||
}
|
||||
|
19
ase/test/awk/err-009.awk
Normal file
19
ase/test/awk/err-009.awk
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
func abc ()
|
||||
{
|
||||
|
||||
local x;
|
||||
print x = 20;
|
||||
|
||||
{
|
||||
local abc;
|
||||
|
||||
abc = 30;
|
||||
print abc;
|
||||
abc ();
|
||||
}
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
abc ();
|
||||
}
|
15
ase/test/awk/err-010.awk
Normal file
15
ase/test/awk/err-010.awk
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
global abc;
|
||||
|
||||
func abc ()
|
||||
{
|
||||
local abc;
|
||||
|
||||
abc = 20;
|
||||
print abc;
|
||||
abc ();
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
abc ();
|
||||
}
|
13
ase/test/awk/err-011.awk
Normal file
13
ase/test/awk/err-011.awk
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
func abc (x)
|
||||
{
|
||||
local x;
|
||||
|
||||
x = 20;
|
||||
print x;
|
||||
abc ();
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
abc ();
|
||||
}
|
14
ase/test/awk/err-012.awk
Normal file
14
ase/test/awk/err-012.awk
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
func abc ()
|
||||
{
|
||||
local j ;
|
||||
|
||||
j = 20;
|
||||
print j;
|
||||
abc ();
|
||||
}
|
||||
|
||||
global abc;
|
||||
BEGIN {
|
||||
abc ();
|
||||
}
|
3
ase/test/awk/err-013.awk
Normal file
3
ase/test/awk/err-013.awk
Normal file
@ -0,0 +1,3 @@
|
||||
func abc (abc)
|
||||
{
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user