*** empty log message ***
This commit is contained in:
parent
06562c78f4
commit
fdfcbe168a
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: parse.c,v 1.91 2006-04-24 15:34:52 bacon Exp $
|
* $Id: parse.c,v 1.92 2006-04-25 15:20:09 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -47,6 +47,7 @@ enum
|
|||||||
TOKEN_TILDE, /* used for unary bitwise-not and regex match */
|
TOKEN_TILDE, /* used for unary bitwise-not and regex match */
|
||||||
TOKEN_RSHIFT,
|
TOKEN_RSHIFT,
|
||||||
TOKEN_LSHIFT,
|
TOKEN_LSHIFT,
|
||||||
|
TOKEN_IN,
|
||||||
TOKEN_EXP,
|
TOKEN_EXP,
|
||||||
|
|
||||||
TOKEN_LPAREN,
|
TOKEN_LPAREN,
|
||||||
@ -88,8 +89,6 @@ enum
|
|||||||
TOKEN_LOCAL,
|
TOKEN_LOCAL,
|
||||||
TOKEN_GLOBAL,
|
TOKEN_GLOBAL,
|
||||||
|
|
||||||
TOKEN_IN,
|
|
||||||
|
|
||||||
__TOKEN_COUNT__
|
__TOKEN_COUNT__
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -125,6 +124,7 @@ static xp_awk_nde_t* __parse_binary_expr (
|
|||||||
|
|
||||||
static xp_awk_nde_t* __parse_logical_or (xp_awk_t* awk);
|
static xp_awk_nde_t* __parse_logical_or (xp_awk_t* awk);
|
||||||
static xp_awk_nde_t* __parse_logical_and (xp_awk_t* awk);
|
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_regex_match (xp_awk_t* awk);
|
static xp_awk_nde_t* __parse_regex_match (xp_awk_t* awk);
|
||||||
static xp_awk_nde_t* __parse_bitwise_or (xp_awk_t* awk);
|
static xp_awk_nde_t* __parse_bitwise_or (xp_awk_t* awk);
|
||||||
static xp_awk_nde_t* __parse_bitwise_xor (xp_awk_t* awk);
|
static xp_awk_nde_t* __parse_bitwise_xor (xp_awk_t* awk);
|
||||||
@ -1060,6 +1060,8 @@ static xp_awk_nde_t* __parse_statement_nb (xp_awk_t* awk)
|
|||||||
|
|
||||||
static xp_awk_nde_t* __parse_expression (xp_awk_t* awk)
|
static xp_awk_nde_t* __parse_expression (xp_awk_t* awk)
|
||||||
{
|
{
|
||||||
|
return __parse_assignment (awk);
|
||||||
|
#if 0
|
||||||
xp_awk_nde_t* nde, * tmp;
|
xp_awk_nde_t* nde, * tmp;
|
||||||
|
|
||||||
do
|
do
|
||||||
@ -1069,13 +1071,19 @@ static xp_awk_nde_t* __parse_expression (xp_awk_t* awk)
|
|||||||
|
|
||||||
nde = tmp; break; /* TODO */
|
nde = tmp; break; /* TODO */
|
||||||
|
|
||||||
if (!match(awk, TOKEN_COMMA)) break;
|
if (!MATCH(awk, TOKEN_COMMA)) break;
|
||||||
if (__get_token(awk) == -1) return XP_NULL;
|
if (__get_token(awk) == -1) return XP_NULL;
|
||||||
}
|
}
|
||||||
while (1);
|
while (1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (!match(awk, TOKEN_IN))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
*/
|
||||||
/* TODO: XP_AWK_NDE_GRP -> should i support i this way??? */
|
/* TODO: XP_AWK_NDE_GRP -> should i support i this way??? */
|
||||||
return nde;
|
return nde;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static xp_awk_nde_t* __parse_assignment (xp_awk_t* awk)
|
static xp_awk_nde_t* __parse_assignment (xp_awk_t* awk)
|
||||||
@ -1319,6 +1327,17 @@ static xp_awk_nde_t* __parse_logical_and (xp_awk_t* awk)
|
|||||||
{ TOKEN_EOF, 0 }
|
{ TOKEN_EOF, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return __parse_binary_expr (awk, map, __parse_in);
|
||||||
|
}
|
||||||
|
|
||||||
|
static xp_awk_nde_t* __parse_in (xp_awk_t* awk)
|
||||||
|
{
|
||||||
|
__binmap_t map[] =
|
||||||
|
{
|
||||||
|
{ TOKEN_IN, XP_AWK_BINOP_IN },
|
||||||
|
{ TOKEN_EOF, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
return __parse_binary_expr (awk, map, __parse_regex_match);
|
return __parse_binary_expr (awk, map, __parse_regex_match);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2859,7 +2878,9 @@ static int __get_string (xp_awk_t* awk)
|
|||||||
|
|
||||||
static int __get_regex (xp_awk_t* awk)
|
static int __get_regex (xp_awk_t* awk)
|
||||||
{
|
{
|
||||||
/* do proper regular expression parsing */
|
/* TODO: do proper regular expression parsing */
|
||||||
|
/* TODO: think if the new line should be allowed to
|
||||||
|
* be included in to a regular expression */
|
||||||
xp_cint_t c;
|
xp_cint_t c;
|
||||||
xp_bool_t escaped = xp_false;
|
xp_bool_t escaped = xp_false;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: run.c,v 1.74 2006-04-24 15:36:08 bacon Exp $
|
* $Id: run.c,v 1.75 2006-04-25 15:20:09 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -71,6 +71,8 @@ static xp_awk_val_t* __eval_binop_lor (
|
|||||||
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);
|
||||||
static xp_awk_val_t* __eval_binop_land (
|
static xp_awk_val_t* __eval_binop_land (
|
||||||
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);
|
||||||
|
static xp_awk_val_t* __eval_binop_in (
|
||||||
|
xp_awk_run_t* run, xp_awk_val_t* left, xp_awk_val_t* right);
|
||||||
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);
|
||||||
static xp_awk_val_t* __eval_binop_bxor (
|
static xp_awk_val_t* __eval_binop_bxor (
|
||||||
@ -856,15 +858,15 @@ static xp_awk_val_t* __eval_expression (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
|||||||
__eval_pos
|
__eval_pos
|
||||||
};
|
};
|
||||||
|
|
||||||
xp_assert (nde->type >= XP_AWK_NDE_ASS &&
|
xp_assert (nde->type >= XP_AWK_NDE_GRP &&
|
||||||
(nde->type - XP_AWK_NDE_ASS) < xp_countof(__eval_func));
|
(nde->type - XP_AWK_NDE_GRP) < xp_countof(__eval_func));
|
||||||
return __eval_func[nde->type-XP_AWK_NDE_ASS] (run, nde);
|
return __eval_func[nde->type-XP_AWK_NDE_GRP] (run, 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 */
|
/* NOT INIMPELMETED YET */
|
||||||
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;
|
||||||
}
|
}
|
||||||
@ -1132,6 +1134,7 @@ 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,
|
||||||
@ -1210,6 +1213,16 @@ 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)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: run.h,v 1.10 2006-04-22 13:54:52 bacon Exp $
|
* $Id: run.h,v 1.11 2006-04-25 15:20:09 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XP_AWK_RUN_H_
|
#ifndef _XP_AWK_RUN_H_
|
||||||
@ -27,6 +27,7 @@ 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,
|
||||||
|
@ -13,7 +13,7 @@ function sum(i, k, y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
//s = sum(10000000);
|
/*s = sum(10000000);*/
|
||||||
s = sum (100);
|
s = sum (100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,8 @@ function sum (i)
|
|||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
{
|
{
|
||||||
//x = sum (10000000);
|
/*x = sum (10000000);
|
||||||
|
*/
|
||||||
x = sum (100);
|
x = sum (100);
|
||||||
s = x;
|
s = x;
|
||||||
ss = z;
|
ss = z;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
//global x, j;
|
/*global x, j;*/
|
||||||
|
|
||||||
func func1 (x)
|
func func1 (x)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user