*** empty log message ***
This commit is contained in:
parent
fdfcbe168a
commit
b5a185032c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.h,v 1.57 2006-04-24 11:36:12 bacon Exp $
|
* $Id: awk.h,v 1.58 2006-04-26 15:49:33 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XP_AWK_AWK_H_
|
#ifndef _XP_AWK_AWK_H_
|
||||||
@ -74,6 +74,8 @@ enum
|
|||||||
XP_AWK_ECOMMA, /* comma expected */
|
XP_AWK_ECOMMA, /* comma expected */
|
||||||
XP_AWK_ESEMICOLON, /* semicolon expected */
|
XP_AWK_ESEMICOLON, /* semicolon expected */
|
||||||
XP_AWK_ECOLON, /* colon expected */
|
XP_AWK_ECOLON, /* colon expected */
|
||||||
|
XP_AWK_EIN, /* keyword 'in' is expected */
|
||||||
|
XP_AWK_ENOTVAR, /* not a variable name after 'in' */
|
||||||
XP_AWK_EEXPRESSION, /* expression expected */
|
XP_AWK_EEXPRESSION, /* expression expected */
|
||||||
|
|
||||||
XP_AWK_EWHILE, /* keyword 'while' is expected */
|
XP_AWK_EWHILE, /* keyword 'while' is expected */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: err.c,v 1.15 2006-04-24 11:25:59 bacon Exp $
|
* $Id: err.c,v 1.16 2006-04-26 15:49:33 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -39,6 +39,8 @@ const xp_char_t* xp_awk_geterrstr (xp_awk_t* awk)
|
|||||||
XP_TEXT("comma expected"),
|
XP_TEXT("comma expected"),
|
||||||
XP_TEXT("semicolon expected"),
|
XP_TEXT("semicolon expected"),
|
||||||
XP_TEXT("colon expected"),
|
XP_TEXT("colon expected"),
|
||||||
|
XP_TEXT("keyword 'in' expected"),
|
||||||
|
XP_TEXT("not a variable after 'in'"),
|
||||||
XP_TEXT("expression expected"),
|
XP_TEXT("expression expected"),
|
||||||
|
|
||||||
XP_TEXT("keyword 'while' expected"),
|
XP_TEXT("keyword 'while' expected"),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: misc.c,v 1.5 2006-04-16 04:31:38 bacon Exp $
|
* $Id: misc.c,v 1.6 2006-04-26 15:49:33 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -122,11 +122,11 @@ xp_real_t xp_awk_strtoreal (const xp_char_t* str)
|
|||||||
* circumstatnces, it is the negative of the number of digits in F.
|
* circumstatnces, it is the negative of the number of digits in F.
|
||||||
* However, if I is very long, the last digits of I get dropped
|
* However, if I is very long, the last digits of I get dropped
|
||||||
* (otherwise a long I with a large negative exponent could cause an
|
* (otherwise a long I with a large negative exponent could cause an
|
||||||
* unnecessary overflow on I alone). In this case, fracExp is
|
* unnecessary overflow on I alone). In this case, frac_exp is
|
||||||
* incremented one for each dropped digit.
|
* incremented one for each dropped digit.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int fracExp = 0;
|
int frac_exp;
|
||||||
int mantSize; /* Number of digits in mantissa. */
|
int mantSize; /* Number of digits in mantissa. */
|
||||||
int decPt; /* Number of mantissa digits BEFORE decimal point */
|
int decPt; /* Number of mantissa digits BEFORE decimal point */
|
||||||
const xp_char_t *pExp; /* Temporarily holds location of exponent in string */
|
const xp_char_t *pExp; /* Temporarily holds location of exponent in string */
|
||||||
@ -176,20 +176,21 @@ xp_real_t xp_awk_strtoreal (const xp_char_t* str)
|
|||||||
{
|
{
|
||||||
mantSize -= 1; /* One of the digits was the point */
|
mantSize -= 1; /* One of the digits was the point */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mantSize > 18)
|
if (mantSize > 18)
|
||||||
{
|
{
|
||||||
fracExp = decPt - 18;
|
frac_exp = decPt - 18;
|
||||||
mantSize = 18;
|
mantSize = 18;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fracExp = decPt - mantSize;
|
frac_exp = decPt - mantSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mantSize == 0)
|
if (mantSize == 0)
|
||||||
{
|
{
|
||||||
fraction = 0.0;
|
fraction = 0.0;
|
||||||
p = str;
|
/*p = str;*/
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -248,8 +249,8 @@ xp_real_t xp_awk_strtoreal (const xp_char_t* str)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (expSign) exp = fracExp - exp;
|
if (expSign) exp = frac_exp - exp;
|
||||||
else exp = fracExp + exp;
|
else exp = frac_exp + exp;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generate a floating-point number that represents the exponent.
|
* Generate a floating-point number that represents the exponent.
|
||||||
|
112
ase/awk/parse.c
112
ase/awk/parse.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: parse.c,v 1.92 2006-04-25 15:20:09 bacon Exp $
|
* $Id: parse.c,v 1.93 2006-04-26 15:49:33 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -1332,6 +1332,7 @@ static xp_awk_nde_t* __parse_logical_and (xp_awk_t* awk)
|
|||||||
|
|
||||||
static xp_awk_nde_t* __parse_in (xp_awk_t* awk)
|
static xp_awk_nde_t* __parse_in (xp_awk_t* awk)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
__binmap_t map[] =
|
__binmap_t map[] =
|
||||||
{
|
{
|
||||||
{ TOKEN_IN, XP_AWK_BINOP_IN },
|
{ TOKEN_IN, XP_AWK_BINOP_IN },
|
||||||
@ -1339,6 +1340,60 @@ static xp_awk_nde_t* __parse_in (xp_awk_t* awk)
|
|||||||
};
|
};
|
||||||
|
|
||||||
return __parse_binary_expr (awk, map, __parse_regex_match);
|
return __parse_binary_expr (awk, map, __parse_regex_match);
|
||||||
|
*/
|
||||||
|
|
||||||
|
xp_awk_nde_exp_t* nde;
|
||||||
|
xp_awk_nde_t* left, * right;
|
||||||
|
|
||||||
|
left = __parse_regex_match (awk);
|
||||||
|
if (left == XP_NULL) return XP_NULL;
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
if (!MATCH(awk,TOKEN_IN)) break;
|
||||||
|
|
||||||
|
if (__get_token(awk) == -1)
|
||||||
|
{
|
||||||
|
xp_awk_clrpt (left);
|
||||||
|
return XP_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
right = __parse_regex_match (awk);
|
||||||
|
if (right == XP_NULL)
|
||||||
|
{
|
||||||
|
xp_awk_clrpt (left);
|
||||||
|
return XP_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (right->type != XP_AWK_NDE_NAMED &&
|
||||||
|
right->type != XP_AWK_NDE_GLOBAL &&
|
||||||
|
right->type != XP_AWK_NDE_LOCAL &&
|
||||||
|
right->type != XP_AWK_NDE_ARG)
|
||||||
|
{
|
||||||
|
xp_awk_clrpt (right);
|
||||||
|
xp_awk_clrpt (left);
|
||||||
|
PANIC (awk, XP_AWK_ENOTVAR);
|
||||||
|
}
|
||||||
|
|
||||||
|
nde = (xp_awk_nde_exp_t*)
|
||||||
|
xp_malloc (xp_sizeof(xp_awk_nde_exp_t));
|
||||||
|
if (nde == XP_NULL)
|
||||||
|
{
|
||||||
|
xp_awk_clrpt (right);
|
||||||
|
xp_awk_clrpt (left);
|
||||||
|
PANIC (awk, XP_AWK_ENOMEM);
|
||||||
|
}
|
||||||
|
|
||||||
|
nde->type = XP_AWK_NDE_EXP_BIN;
|
||||||
|
nde->next = XP_NULL;
|
||||||
|
nde->opcode = XP_AWK_BINOP_IN;
|
||||||
|
nde->left = left;
|
||||||
|
nde->right = right;
|
||||||
|
|
||||||
|
left = (xp_awk_nde_t*)nde;
|
||||||
|
}
|
||||||
|
|
||||||
|
return left;
|
||||||
}
|
}
|
||||||
|
|
||||||
static xp_awk_nde_t* __parse_regex_match (xp_awk_t* awk)
|
static xp_awk_nde_t* __parse_regex_match (xp_awk_t* awk)
|
||||||
@ -1778,6 +1833,7 @@ static xp_awk_nde_t* __parse_primary (xp_awk_t* awk)
|
|||||||
else if (MATCH(awk,TOKEN_LPAREN))
|
else if (MATCH(awk,TOKEN_LPAREN))
|
||||||
{
|
{
|
||||||
xp_awk_nde_t* nde;
|
xp_awk_nde_t* nde;
|
||||||
|
xp_awk_nde_t* last;
|
||||||
|
|
||||||
/* eat up the left parenthesis */
|
/* eat up the left parenthesis */
|
||||||
if (__get_token(awk) == -1) return XP_NULL;
|
if (__get_token(awk) == -1) return XP_NULL;
|
||||||
@ -1786,6 +1842,33 @@ static xp_awk_nde_t* __parse_primary (xp_awk_t* awk)
|
|||||||
nde = __parse_expression (awk);
|
nde = __parse_expression (awk);
|
||||||
if (nde == XP_NULL) return XP_NULL;
|
if (nde == XP_NULL) return XP_NULL;
|
||||||
|
|
||||||
|
/* ---------------- */
|
||||||
|
last = nde;
|
||||||
|
xp_assert (last->next == XP_NULL);
|
||||||
|
|
||||||
|
while (MATCH(awk,TOKEN_COMMA))
|
||||||
|
{
|
||||||
|
xp_awk_nde_t* tmp;
|
||||||
|
|
||||||
|
if (__get_token(awk) == -1)
|
||||||
|
{
|
||||||
|
xp_awk_clrpt (nde);
|
||||||
|
return XP_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = __parse_expression (awk);
|
||||||
|
if (tmp == XP_NULL)
|
||||||
|
{
|
||||||
|
xp_awk_clrpt (nde);
|
||||||
|
return XP_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
xp_assert (tmp->next == XP_NULL);
|
||||||
|
last->next = tmp;
|
||||||
|
last = tmp;
|
||||||
|
}
|
||||||
|
/* ----------------- */
|
||||||
|
|
||||||
/* check for the closing parenthesis */
|
/* check for the closing parenthesis */
|
||||||
if (!MATCH(awk,TOKEN_RPAREN))
|
if (!MATCH(awk,TOKEN_RPAREN))
|
||||||
{
|
{
|
||||||
@ -1799,6 +1882,32 @@ static xp_awk_nde_t* __parse_primary (xp_awk_t* awk)
|
|||||||
return XP_NULL;
|
return XP_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ----------------- */
|
||||||
|
if (nde->next != XP_NULL)
|
||||||
|
{
|
||||||
|
xp_awk_nde_grp_t* tmp;
|
||||||
|
|
||||||
|
if (!MATCH(awk,TOKEN_IN))
|
||||||
|
{
|
||||||
|
xp_awk_clrpt (nde);
|
||||||
|
PANIC (awk, XP_AWK_EIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = (xp_awk_nde_grp_t*) xp_malloc (xp_sizeof(xp_awk_nde_grp_t));
|
||||||
|
if (tmp == XP_NULL)
|
||||||
|
{
|
||||||
|
xp_awk_clrpt (nde);
|
||||||
|
PANIC (awk, XP_AWK_ENOMEM);
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp->type = XP_AWK_NDE_GRP;
|
||||||
|
tmp->next = XP_NULL;
|
||||||
|
tmp->body = nde;
|
||||||
|
|
||||||
|
nde = tmp;
|
||||||
|
}
|
||||||
|
/* ----------------- */
|
||||||
|
|
||||||
return nde;
|
return nde;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2735,6 +2844,7 @@ static int __get_token (xp_awk_t* awk)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xp_printf (XP_TEXT("token -> [%s]\n"), XP_STR_BUF(&awk->token.name));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: run.c,v 1.75 2006-04-25 15:20:09 bacon Exp $
|
* $Id: run.c,v 1.76 2006-04-26 15:49:33 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -865,8 +865,8 @@ static xp_awk_val_t* __eval_expression (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
|||||||
|
|
||||||
static xp_awk_val_t* __eval_group (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
static xp_awk_val_t* __eval_group (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
||||||
{
|
{
|
||||||
/* NOT INIMPELMETED YET */
|
/* in fact, this eval group would only be triggered by the operator in */
|
||||||
xp_printf (XP_TEXT("***** eval_group not implemented\n"));
|
xp_printf (XP_TEXT("***** eval_group NOT IMPLEMENTED\n"));
|
||||||
PANIC (run, XP_AWK_EINTERNAL);
|
PANIC (run, XP_AWK_EINTERNAL);
|
||||||
return XP_NULL;
|
return XP_NULL;
|
||||||
}
|
}
|
||||||
@ -1134,7 +1134,6 @@ static xp_awk_val_t* __eval_binary (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
|||||||
{
|
{
|
||||||
__eval_binop_lor,
|
__eval_binop_lor,
|
||||||
__eval_binop_land,
|
__eval_binop_land,
|
||||||
__eval_binop_in,
|
|
||||||
__eval_binop_bor,
|
__eval_binop_bor,
|
||||||
__eval_binop_bxor,
|
__eval_binop_bxor,
|
||||||
__eval_binop_band,
|
__eval_binop_band,
|
||||||
@ -1156,6 +1155,7 @@ static xp_awk_val_t* __eval_binary (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
|||||||
__eval_binop_mod,
|
__eval_binop_mod,
|
||||||
__eval_binop_exp,
|
__eval_binop_exp,
|
||||||
|
|
||||||
|
__eval_binop_in,
|
||||||
__eval_binop_ma,
|
__eval_binop_ma,
|
||||||
__eval_binop_nm
|
__eval_binop_nm
|
||||||
};
|
};
|
||||||
@ -1213,16 +1213,6 @@ static xp_awk_val_t* __eval_binop_land (
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static xp_awk_val_t* __eval_binop_in (
|
|
||||||
xp_awk_run_t* run, xp_awk_val_t* left, xp_awk_val_t* right)
|
|
||||||
{
|
|
||||||
/* TODO: */
|
|
||||||
|
|
||||||
xp_printf (XP_TEXT("***** __eval_binop_in not implemented yet\n"));
|
|
||||||
PANIC (run, XP_AWK_EINTERNAL);
|
|
||||||
return XP_NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static xp_awk_val_t* __eval_binop_bor (
|
static xp_awk_val_t* __eval_binop_bor (
|
||||||
xp_awk_run_t* run, xp_awk_val_t* left, xp_awk_val_t* right)
|
xp_awk_run_t* run, xp_awk_val_t* left, xp_awk_val_t* right)
|
||||||
{
|
{
|
||||||
@ -1827,6 +1817,16 @@ static xp_awk_val_t* __eval_binop_exp (
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static xp_awk_val_t* __eval_binop_in (
|
||||||
|
xp_awk_run_t* run, xp_awk_val_t* left, xp_awk_val_t* right)
|
||||||
|
{
|
||||||
|
/* TODO: */
|
||||||
|
|
||||||
|
xp_printf (XP_TEXT("***** __eval_binop_in not implemented yet\n"));
|
||||||
|
PANIC (run, XP_AWK_EINTERNAL);
|
||||||
|
return XP_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static xp_awk_val_t* __eval_binop_ma (
|
static xp_awk_val_t* __eval_binop_ma (
|
||||||
xp_awk_run_t* run, xp_awk_val_t* left, xp_awk_val_t* right)
|
xp_awk_run_t* run, xp_awk_val_t* left, xp_awk_val_t* right)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: run.h,v 1.11 2006-04-25 15:20:09 bacon Exp $
|
* $Id: run.h,v 1.12 2006-04-26 15:49:33 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XP_AWK_RUN_H_
|
#ifndef _XP_AWK_RUN_H_
|
||||||
@ -27,7 +27,6 @@ enum
|
|||||||
* __binop_str in tree.c and __binop_func in run.c accordingly. */
|
* __binop_str in tree.c and __binop_func in run.c accordingly. */
|
||||||
XP_AWK_BINOP_LOR,
|
XP_AWK_BINOP_LOR,
|
||||||
XP_AWK_BINOP_LAND,
|
XP_AWK_BINOP_LAND,
|
||||||
XP_AWK_BINOP_IN,
|
|
||||||
XP_AWK_BINOP_BOR,
|
XP_AWK_BINOP_BOR,
|
||||||
XP_AWK_BINOP_BXOR,
|
XP_AWK_BINOP_BXOR,
|
||||||
XP_AWK_BINOP_BAND,
|
XP_AWK_BINOP_BAND,
|
||||||
@ -49,6 +48,7 @@ enum
|
|||||||
XP_AWK_BINOP_MOD,
|
XP_AWK_BINOP_MOD,
|
||||||
XP_AWK_BINOP_EXP,
|
XP_AWK_BINOP_EXP,
|
||||||
|
|
||||||
|
XP_AWK_BINOP_IN,
|
||||||
XP_AWK_BINOP_MA,
|
XP_AWK_BINOP_MA,
|
||||||
XP_AWK_BINOP_NM
|
XP_AWK_BINOP_NM
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: tree.c,v 1.41 2006-04-24 14:38:46 bacon Exp $
|
* $Id: tree.c,v 1.42 2006-04-26 15:49:33 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -46,6 +46,7 @@ static const xp_char_t* __binop_str[] =
|
|||||||
XP_TEXT("%"),
|
XP_TEXT("%"),
|
||||||
XP_TEXT("**"),
|
XP_TEXT("**"),
|
||||||
|
|
||||||
|
XP_TEXT("in"),
|
||||||
XP_TEXT("~"),
|
XP_TEXT("~"),
|
||||||
XP_TEXT("!~")
|
XP_TEXT("!~")
|
||||||
};
|
};
|
||||||
@ -81,6 +82,20 @@ static int __print_expression (xp_awk_nde_t* nde)
|
|||||||
{
|
{
|
||||||
switch (nde->type)
|
switch (nde->type)
|
||||||
{
|
{
|
||||||
|
case XP_AWK_NDE_GRP:
|
||||||
|
{
|
||||||
|
xp_awk_nde_t* p = ((xp_awk_nde_grp_t*)nde)->body;
|
||||||
|
|
||||||
|
xp_printf (XP_TEXT("("));
|
||||||
|
while (p != XP_NULL) {
|
||||||
|
__print_expression (p);
|
||||||
|
if (p->next != XP_NULL) xp_printf (XP_TEXT(","));
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
xp_printf (XP_TEXT(")"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case XP_AWK_NDE_ASS:
|
case XP_AWK_NDE_ASS:
|
||||||
if (__print_expression (((xp_awk_nde_ass_t*)nde)->left) == -1) return -1;
|
if (__print_expression (((xp_awk_nde_ass_t*)nde)->left) == -1) return -1;
|
||||||
xp_printf (XP_TEXT(" %s "),
|
xp_printf (XP_TEXT(" %s "),
|
||||||
@ -570,6 +585,11 @@ void xp_awk_clrpt (xp_awk_nde_t* tree)
|
|||||||
xp_free (p);
|
xp_free (p);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case XP_AWK_NDE_GRP:
|
||||||
|
xp_awk_clrpt (((xp_awk_nde_grp_t*)p)->body);
|
||||||
|
xp_free (p);
|
||||||
|
break;
|
||||||
|
|
||||||
case XP_AWK_NDE_ASS:
|
case XP_AWK_NDE_ASS:
|
||||||
xp_awk_clrpt (((xp_awk_nde_ass_t*)p)->left);
|
xp_awk_clrpt (((xp_awk_nde_ass_t*)p)->left);
|
||||||
xp_awk_clrpt (((xp_awk_nde_ass_t*)p)->right);
|
xp_awk_clrpt (((xp_awk_nde_ass_t*)p)->right);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: tree.h,v 1.38 2006-04-24 15:34:52 bacon Exp $
|
* $Id: tree.h,v 1.39 2006-04-26 15:49:33 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XP_AWK_TREE_H_
|
#ifndef _XP_AWK_TREE_H_
|
||||||
@ -109,7 +109,7 @@ struct xp_awk_nde_blk_t
|
|||||||
struct xp_awk_nde_grp_t
|
struct xp_awk_nde_grp_t
|
||||||
{
|
{
|
||||||
XP_AWK_NDE_HDR;
|
XP_AWK_NDE_HDR;
|
||||||
xp_awk_nde_t* head;
|
xp_awk_nde_t* body;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* XP_AWK_NDE_ASS - assignment */
|
/* XP_AWK_NDE_ASS - assignment */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: val.h,v 1.20 2006-04-24 11:22:42 bacon Exp $
|
* $Id: val.h,v 1.21 2006-04-26 15:53:17 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XP_AWK_VAL_H_
|
#ifndef _XP_AWK_VAL_H_
|
||||||
@ -81,6 +81,10 @@ struct xp_awk_val_rex_t
|
|||||||
struct xp_awk_val_map_t
|
struct xp_awk_val_map_t
|
||||||
{
|
{
|
||||||
XP_AWK_VAL_HDR;
|
XP_AWK_VAL_HDR;
|
||||||
|
|
||||||
|
/* TODO: make val_map to array if the indices used are all integers
|
||||||
|
* switch to map dynamically once the non-integral index is seen
|
||||||
|
*/
|
||||||
xp_awk_map_t* map;
|
xp_awk_map_t* map;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user