*** empty log message ***
This commit is contained in:
parent
538acef312
commit
9bd13da27c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: parse.c,v 1.124 2006-06-27 14:18:19 bacon Exp $
|
* $Id: parse.c,v 1.125 2006-06-27 14:32:03 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -172,6 +172,7 @@ static int __skip_comment (xp_awk_t* awk);
|
|||||||
static int __classify_ident (xp_awk_t* awk, const xp_char_t* ident);
|
static int __classify_ident (xp_awk_t* awk, const xp_char_t* ident);
|
||||||
static int __assign_to_opcode (xp_awk_t* awk);
|
static int __assign_to_opcode (xp_awk_t* awk);
|
||||||
static int __is_plain_var (xp_awk_nde_t* nde);
|
static int __is_plain_var (xp_awk_nde_t* nde);
|
||||||
|
static int __is_var (xp_awk_nde_t* nde);
|
||||||
|
|
||||||
struct __kwent
|
struct __kwent
|
||||||
{
|
{
|
||||||
@ -1144,15 +1145,7 @@ static xp_awk_nde_t* __parse_expression (xp_awk_t* awk)
|
|||||||
if (opcode == -1) return x;
|
if (opcode == -1) return x;
|
||||||
|
|
||||||
xp_assert (x->next == XP_NULL);
|
xp_assert (x->next == XP_NULL);
|
||||||
if (x->type != XP_AWK_NDE_ARG &&
|
if (!__is_var(x) && x->type != XP_AWK_NDE_POS)
|
||||||
x->type != XP_AWK_NDE_ARGIDX &&
|
|
||||||
x->type != XP_AWK_NDE_NAMED &&
|
|
||||||
x->type != XP_AWK_NDE_NAMEDIDX &&
|
|
||||||
x->type != XP_AWK_NDE_GLOBAL &&
|
|
||||||
x->type != XP_AWK_NDE_GLOBALIDX &&
|
|
||||||
x->type != XP_AWK_NDE_LOCAL &&
|
|
||||||
x->type != XP_AWK_NDE_LOCALIDX &&
|
|
||||||
x->type != XP_AWK_NDE_POS)
|
|
||||||
{
|
{
|
||||||
xp_awk_clrpt (x);
|
xp_awk_clrpt (x);
|
||||||
PANIC (awk, XP_AWK_EASSIGNMENT);
|
PANIC (awk, XP_AWK_EASSIGNMENT);
|
||||||
@ -2787,14 +2780,13 @@ static xp_awk_nde_t* __parse_delete (xp_awk_t* awk)
|
|||||||
var = __parse_primary_ident (awk);
|
var = __parse_primary_ident (awk);
|
||||||
if (var == XP_NULL) return XP_NULL;
|
if (var == XP_NULL) return XP_NULL;
|
||||||
|
|
||||||
if (!__is_plain_var (var))
|
if (!__is_var (var))
|
||||||
{
|
{
|
||||||
/* a normal identifier is expected */
|
/* a normal identifier is expected */
|
||||||
xp_awk_clrpt (var);
|
xp_awk_clrpt (var);
|
||||||
PANIC (awk, XP_AWK_EIDENT);
|
PANIC (awk, XP_AWK_EIDENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: .... delete var[pattern]... */
|
|
||||||
nde = (xp_awk_nde_delete_t*)xp_malloc(xp_sizeof(xp_awk_nde_delete_t));
|
nde = (xp_awk_nde_delete_t*)xp_malloc(xp_sizeof(xp_awk_nde_delete_t));
|
||||||
if (nde == XP_NULL) PANIC (awk, XP_AWK_ENOMEM);
|
if (nde == XP_NULL) PANIC (awk, XP_AWK_ENOMEM);
|
||||||
|
|
||||||
@ -3672,3 +3664,15 @@ static int __is_plain_var (xp_awk_nde_t* nde)
|
|||||||
nde->type == XP_AWK_NDE_ARG ||
|
nde->type == XP_AWK_NDE_ARG ||
|
||||||
nde->type == XP_AWK_NDE_NAMED;
|
nde->type == XP_AWK_NDE_NAMED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __is_var (xp_awk_nde_t* nde)
|
||||||
|
{
|
||||||
|
return nde->type == XP_AWK_NDE_GLOBAL ||
|
||||||
|
nde->type == XP_AWK_NDE_LOCAL ||
|
||||||
|
nde->type == XP_AWK_NDE_ARG ||
|
||||||
|
nde->type == XP_AWK_NDE_NAMED ||
|
||||||
|
nde->type == XP_AWK_NDE_GLOBALIDX ||
|
||||||
|
nde->type == XP_AWK_NDE_LOCALIDX ||
|
||||||
|
nde->type == XP_AWK_NDE_ARGIDX ||
|
||||||
|
nde->type == XP_AWK_NDE_NAMEDIDX;
|
||||||
|
}
|
||||||
|
@ -9,4 +9,5 @@ BEGIN
|
|||||||
print "-------------" >> 10;
|
print "-------------" >> 10;
|
||||||
|
|
||||||
delete abc;
|
delete abc;
|
||||||
|
delete abc["aaaa"] ;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user