Recovered from cvs revision 2007-09-29 01:11:00
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.cpp,v 1.59 2007/09/25 07:17:30 bacon Exp $
|
||||
* $Id: Awk.cpp,v 1.60 2007/09/27 11:30:20 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -630,17 +630,11 @@ int Awk::open ()
|
||||
|
||||
int opt =
|
||||
OPT_IMPLICIT |
|
||||
OPT_EXPLICIT |
|
||||
OPT_UNIQUEFN |
|
||||
OPT_IDIV |
|
||||
OPT_SHADING |
|
||||
OPT_SHIFT |
|
||||
OPT_EXTIO |
|
||||
OPT_BLOCKLESS |
|
||||
OPT_BASEONE |
|
||||
OPT_STRIPSPACES |
|
||||
OPT_NEXTOFILE |
|
||||
OPT_ARGSTOMAIN;
|
||||
OPT_BASEONE;
|
||||
ase_awk_setoption (awk, opt);
|
||||
|
||||
runCallback = false;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.hpp,v 1.61 2007/09/25 15:27:54 bacon Exp $
|
||||
* $Id: Awk.hpp,v 1.62 2007/09/27 11:04:10 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -533,7 +533,9 @@ public:
|
||||
*/
|
||||
OPT_ARGSTOMAIN = ASE_AWK_ARGSTOMAIN,
|
||||
/** Enables the keyword 'reset' */
|
||||
OPT_RESET = ASE_AWK_RESET
|
||||
OPT_RESET = ASE_AWK_RESET,
|
||||
/** Allows the assignment of a map value to a variable */
|
||||
OPT_MAPTOVAR = ASE_AWK_MAPTOVAR
|
||||
};
|
||||
// end of enum Option
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.java,v 1.14 2007/09/23 16:48:55 bacon Exp $
|
||||
* $Id: Awk.java,v 1.15 2007/09/27 11:04:10 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -38,6 +38,8 @@ public abstract class Awk
|
||||
public static final int OPTION_NEXTOFILE = (1 << 12);
|
||||
public static final int OPTION_CRLF = (1 << 13);
|
||||
public static final int OPTION_ARGSTOMAIN = (1 << 14);
|
||||
public static final int OPTION_RESET = (1 << 15);
|
||||
public static final int OPTION_MAPTOVAR = (1 << 16);
|
||||
|
||||
protected final static Reader stdin =
|
||||
new BufferedReader (new InputStreamReader (System.in));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.h,v 1.14 2007/09/25 15:27:54 bacon Exp $
|
||||
* $Id: awk.h,v 1.16 2007/09/27 11:30:54 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -162,7 +162,7 @@ enum ase_awk_option_t
|
||||
/* support getline and print */
|
||||
ASE_AWK_EXTIO = (1 << 7),
|
||||
|
||||
/* support co-process */
|
||||
/* support co-process - NOT IMPLEMENTED YET */
|
||||
ASE_AWK_COPROC = (1 << 8),
|
||||
|
||||
/* support blockless patterns */
|
||||
@ -196,7 +196,10 @@ enum ase_awk_option_t
|
||||
ASE_AWK_ARGSTOMAIN = (1 << 14),
|
||||
|
||||
/* enable the non-standard keyworkd reset */
|
||||
ASE_AWK_RESET = (1 << 15)
|
||||
ASE_AWK_RESET = (1 << 15),
|
||||
|
||||
/* allows the assignment of a map value to a variable */
|
||||
ASE_AWK_MAPTOVAR = (1 << 16)
|
||||
};
|
||||
|
||||
/* error code */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: run.c,v 1.15 2007/09/25 15:27:54 bacon Exp $
|
||||
* $Id: run.c,v 1.16 2007/09/27 11:04:10 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -2173,18 +2173,20 @@ static int run_return (ase_awk_run_t* run, ase_awk_nde_return_t* nde)
|
||||
val = eval_expression (run, nde->val);
|
||||
if (val == ASE_NULL) return -1;
|
||||
|
||||
#ifdef PROHIBIT_MAP_ASSIGNMENT_TO_VARIABLE
|
||||
if (val->type == ASE_AWK_VAL_MAP)
|
||||
if ((run->awk->option & ASE_AWK_MAPTOVAR) == 0)
|
||||
{
|
||||
/* cannot return a map */
|
||||
ase_awk_refupval (run, val);
|
||||
ase_awk_refdownval (run, val);
|
||||
if (val->type == ASE_AWK_VAL_MAP)
|
||||
{
|
||||
/* cannot return a map */
|
||||
ase_awk_refupval (run, val);
|
||||
ase_awk_refdownval (run, val);
|
||||
|
||||
ase_awk_setrunerror (run,
|
||||
ASE_AWK_EMAPNOTALLOWED, nde->line, ASE_NULL, 0);
|
||||
return -1;
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_EMAPNOTALLOWED,
|
||||
nde->line, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
ase_awk_refdownval (run, STACK_RETVAL(run));
|
||||
STACK_RETVAL(run) = val;
|
||||
@ -3089,13 +3091,15 @@ static ase_awk_val_t* do_assignment (
|
||||
var->type == ASE_AWK_NDE_LOCAL ||
|
||||
var->type == ASE_AWK_NDE_ARG)
|
||||
{
|
||||
#ifdef PROHIBIT_MAP_ASSIGNMENT_TO_VARIABLE
|
||||
if (val->type == ASE_AWK_VAL_MAP)
|
||||
if ((run->awk->option & ASE_AWK_MAPTOVAR) == 0)
|
||||
{
|
||||
errnum = ASE_AWK_ENOTASS;
|
||||
goto exit_on_error;
|
||||
if (val->type == ASE_AWK_VAL_MAP)
|
||||
{
|
||||
errnum = ASE_AWK_ENOTASS;
|
||||
goto exit_on_error;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
ret = do_assignment_scalar (run, (ase_awk_nde_var_t*)var, val);
|
||||
}
|
||||
else if (var->type == ASE_AWK_NDE_NAMEDIDX ||
|
||||
@ -3145,9 +3149,9 @@ static ase_awk_val_t* do_assignment_scalar (
|
||||
var->type == ASE_AWK_NDE_LOCAL ||
|
||||
var->type == ASE_AWK_NDE_ARG) && var->idx == ASE_NULL);
|
||||
|
||||
#ifdef PROHIBIT_MAP_ASSIGNMENT_TO_VARIABLE
|
||||
ASE_ASSERT (val->type != ASE_AWK_VAL_MAP);
|
||||
#endif
|
||||
ASE_ASSERT (
|
||||
(run->awk->option & ASE_AWK_MAPTOVAR) ||
|
||||
val->type != ASE_AWK_VAL_MAP);
|
||||
|
||||
if (var->type == ASE_AWK_NDE_NAMED)
|
||||
{
|
||||
|
Reference in New Issue
Block a user