*** empty log message ***
This commit is contained in:
parent
c1c403e83d
commit
c5dd529c73
17
ase/awk/Makefile.sco
Normal file
17
ase/awk/Makefile.sco
Normal file
@ -0,0 +1,17 @@
|
||||
SRCS = awk.c err.c tree.c tab.c map.c parse.c run.c sa.c val.c misc.c
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
OUT = libxpawk.a
|
||||
|
||||
CC = cc
|
||||
CFLAGS = -Xc -a ansi -O2 -I../.. -D__STAND_ALONE
|
||||
|
||||
all: $(OBJS)
|
||||
|
||||
|
||||
clean:
|
||||
rm -rf $(OBJS) $(OUT) *.obj
|
||||
|
||||
.SUFFIXES: .c .o
|
||||
.c.o:
|
||||
$(CC) $(CFLAGS) -c $<
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.c,v 1.39 2006-04-09 15:31:13 bacon Exp $
|
||||
* $Id: awk.c,v 1.40 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/awk/awk_i.h>
|
||||
@ -54,7 +54,7 @@ xp_awk_t* xp_awk_open (void)
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
// TODO: initial map size...
|
||||
/* TODO: initial map size... */
|
||||
if (xp_awk_map_open(&awk->run.named,awk,256,__free_namedval) == XP_NULL) {
|
||||
xp_str_close (&awk->token.name);
|
||||
xp_awk_map_close (&awk->tree.funcs);
|
||||
@ -114,9 +114,9 @@ int xp_awk_close (xp_awk_t* awk)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// TODO: write a function to clear awk->parse data structure.
|
||||
// this would be need either as a separate function or as a part of xp_awk_clear...
|
||||
// do i have to pass an option to xp_awk_clear to do this???
|
||||
/* TODO: write a function to clear awk->parse data structure.
|
||||
this would be need either as a separate function or as a part of xp_awk_clear...
|
||||
do i have to pass an option to xp_awk_clear to do this??? */
|
||||
|
||||
void xp_awk_clear (xp_awk_t* awk)
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.h,v 1.47 2006-04-10 15:52:07 bacon Exp $
|
||||
* $Id: awk.h,v 1.48 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_AWK_AWK_H_
|
||||
@ -35,7 +35,7 @@ enum
|
||||
/* run options */
|
||||
enum
|
||||
{
|
||||
XP_AWK_RUNMAIN = (1 << 0), /* execution starts from main */
|
||||
XP_AWK_RUNMAIN = (1 << 0) /* execution starts from main */
|
||||
};
|
||||
|
||||
/* error code */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk_i.h,v 1.2 2006-04-02 12:41:14 bacon Exp $
|
||||
* $Id: awk_i.h,v 1.3 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_AWK_AWKI_H_
|
||||
@ -69,8 +69,8 @@ struct xp_awk_t
|
||||
xp_size_t stack_limit;
|
||||
int exit_level;
|
||||
|
||||
xp_awk_val_int_t* icache[100]; // TODO: ...
|
||||
xp_awk_val_real_t* rcache[100]; // TODO: ...
|
||||
xp_awk_val_int_t* icache[100]; /* TODO: ... */
|
||||
xp_awk_val_real_t* rcache[100]; /* TODO: ... */
|
||||
xp_size_t icache_count;
|
||||
xp_size_t rcache_count;
|
||||
} run;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: map.c,v 1.9 2006-03-31 16:35:37 bacon Exp $
|
||||
* $Id: map.c,v 1.10 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/awk/awk_i.h>
|
||||
@ -10,8 +10,8 @@
|
||||
#include <xp/bas/assert.h>
|
||||
#endif
|
||||
|
||||
// TODO: improve the entire map routines.
|
||||
// support automatic bucket resizing and remaping, etc.
|
||||
/* TODO: improve the entire map routines.
|
||||
support automatic bucket resizing and remaping, etc. */
|
||||
|
||||
static xp_size_t __hash (const xp_char_t* key);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: parse.c,v 1.79 2006-04-12 03:54:12 bacon Exp $
|
||||
* $Id: parse.c,v 1.80 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/awk/awk_i.h>
|
||||
@ -235,7 +235,7 @@ do { \
|
||||
|
||||
#define PANIC(awk,code) do { (awk)->errnum = (code); return XP_NULL; } while (0);
|
||||
|
||||
// TODO: remove stdio.h
|
||||
/* TODO: remove stdio.h */
|
||||
#ifndef __STAND_ALONE
|
||||
#include <xp/bas/stdio.h>
|
||||
#endif
|
||||
@ -314,8 +314,8 @@ int xp_awk_parse (xp_awk_t* awk)
|
||||
|
||||
if (__parse_progunit(awk) == XP_NULL)
|
||||
{
|
||||
// TODO: cleanup the parse tree created so far....
|
||||
// function tables also etc...
|
||||
/* TODO: cleanup the parse tree created so far....
|
||||
function tables also etc... */
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -556,7 +556,7 @@ static xp_awk_nde_t* __parse_function (xp_awk_t* awk)
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
// TODO: consider if the parameters should be saved for some reasons..
|
||||
/* TODO: consider if the parameters should be saved for some reasons.. */
|
||||
nargs = xp_awk_tab_getsize(&awk->parse.params);
|
||||
/* parameter names are not required anymore. clear them */
|
||||
xp_awk_tab_clear (&awk->parse.params);
|
||||
@ -1022,8 +1022,7 @@ static xp_awk_nde_t* __parse_expression (xp_awk_t* awk)
|
||||
if (x == XP_NULL) return XP_NULL;
|
||||
if (!MATCH(awk,TOKEN_ASSIGN)) return x;
|
||||
|
||||
//TODO: PLUS_ASSIGN, MINUS_ASSIGN, ....
|
||||
//
|
||||
/*TODO: PLUS_ASSIGN, MINUS_ASSIGN, .... */
|
||||
xp_assert (x->next == XP_NULL);
|
||||
if (x->type != XP_AWK_NDE_ARG &&
|
||||
x->type != XP_AWK_NDE_ARGIDX &&
|
||||
@ -1202,7 +1201,7 @@ static xp_awk_nde_t* __parse_binary_expr (
|
||||
((xp_awk_nde_real_t*)left)->val = l;
|
||||
continue;
|
||||
}
|
||||
// TODO: enhance constant folding more...
|
||||
/* TODO: enhance constant folding more... */
|
||||
|
||||
skip_constant_folding:
|
||||
nde = (xp_awk_nde_exp_t*)
|
||||
@ -1500,7 +1499,7 @@ static xp_awk_nde_t* __parse_primary (xp_awk_t* awk)
|
||||
{
|
||||
nde->type = XP_AWK_NDE_ARG;
|
||||
nde->next = XP_NULL;
|
||||
//nde->id.name = XP_NULL;
|
||||
/*nde->id.name = XP_NULL;*/
|
||||
nde->id.name = name_dup;
|
||||
nde->id.idxa = idxa;
|
||||
|
||||
@ -1513,7 +1512,7 @@ static xp_awk_nde_t* __parse_primary (xp_awk_t* awk)
|
||||
{
|
||||
nde->type = XP_AWK_NDE_LOCAL;
|
||||
nde->next = XP_NULL;
|
||||
//nde->id.name = XP_NULL;
|
||||
/*nde->id.name = XP_NULL;*/
|
||||
nde->id.name = name_dup;
|
||||
nde->id.idxa = idxa;
|
||||
|
||||
@ -1526,7 +1525,7 @@ static xp_awk_nde_t* __parse_primary (xp_awk_t* awk)
|
||||
{
|
||||
nde->type = XP_AWK_NDE_GLOBAL;
|
||||
nde->next = XP_NULL;
|
||||
//nde->id.name = XP_NULL;
|
||||
/*nde->id.name = XP_NULL;*/
|
||||
nde->id.name = name_dup;
|
||||
nde->id.idxa = idxa;
|
||||
|
||||
@ -1624,7 +1623,7 @@ static xp_awk_nde_t* __parse_primary (xp_awk_t* awk)
|
||||
}
|
||||
else if (MATCH(awk,TOKEN_REGEX))
|
||||
{
|
||||
// TODO: ....
|
||||
/* TODO: .... */
|
||||
}
|
||||
else if (MATCH(awk,TOKEN_DOLLAR))
|
||||
{
|
||||
@ -1716,7 +1715,7 @@ static xp_awk_nde_t* __parse_hashidx (xp_awk_t* awk, xp_char_t* name)
|
||||
{
|
||||
nde->type = XP_AWK_NDE_ARGIDX;
|
||||
nde->next = XP_NULL;
|
||||
//nde->id.name = XP_NULL;
|
||||
/*nde->id.name = XP_NULL; */
|
||||
nde->id.name = name;
|
||||
nde->id.idxa = idxa;
|
||||
nde->idx = idx;
|
||||
@ -1730,7 +1729,7 @@ static xp_awk_nde_t* __parse_hashidx (xp_awk_t* awk, xp_char_t* name)
|
||||
{
|
||||
nde->type = XP_AWK_NDE_LOCALIDX;
|
||||
nde->next = XP_NULL;
|
||||
//nde->id.name = XP_NULL;
|
||||
/*nde->id.name = XP_NULL; */
|
||||
nde->id.name = name;
|
||||
nde->id.idxa = idxa;
|
||||
nde->idx = idx;
|
||||
@ -1744,7 +1743,7 @@ static xp_awk_nde_t* __parse_hashidx (xp_awk_t* awk, xp_char_t* name)
|
||||
{
|
||||
nde->type = XP_AWK_NDE_GLOBALIDX;
|
||||
nde->next = XP_NULL;
|
||||
//nde->id.name = XP_NULL;
|
||||
/*nde->id.name = XP_NULL;*/
|
||||
nde->id.name = name;
|
||||
nde->id.idxa = idxa;
|
||||
|
||||
@ -1957,7 +1956,7 @@ static xp_awk_nde_t* __parse_for (xp_awk_t* awk)
|
||||
xp_awk_nde_t* init, * test, * incr, * body;
|
||||
xp_awk_nde_for_t* nde;
|
||||
|
||||
// TODO: parse for (x in list) ...
|
||||
/* TODO: parse for (x in list) ... */
|
||||
|
||||
if (!MATCH(awk,TOKEN_LPAREN)) PANIC (awk, XP_AWK_ELPAREN);
|
||||
if (__get_token(awk) == -1) return XP_NULL;
|
||||
@ -2216,7 +2215,7 @@ static xp_awk_nde_t* __parse_exit (xp_awk_t* awk)
|
||||
|
||||
static xp_awk_nde_t* __parse_delete (xp_awk_t* awk)
|
||||
{
|
||||
// TODO: implement this...
|
||||
/* TODO: implement this... */
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
@ -2494,7 +2493,7 @@ static int __get_token (xp_awk_t* awk)
|
||||
}
|
||||
else if (c == XP_CHAR('/'))
|
||||
{
|
||||
// TODO: handle regular expression here... /^pattern$/
|
||||
/* TODO: handle regular expression here... /^pattern$/ */
|
||||
GET_CHAR_TO (awk, c);
|
||||
|
||||
if (c == XP_CHAR('='))
|
||||
|
@ -1,10 +1,10 @@
|
||||
/*
|
||||
* $Id: run.c,v 1.47 2006-04-12 03:54:12 bacon Exp $
|
||||
* $Id: run.c,v 1.48 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/awk/awk_i.h>
|
||||
|
||||
// TODO: remove this dependency...
|
||||
/* TODO: remove this dependency...*/
|
||||
#include <math.h>
|
||||
|
||||
#ifndef __STAND_ALONE
|
||||
@ -238,9 +238,9 @@ int xp_awk_run (xp_awk_t* awk)
|
||||
{
|
||||
awk->run.exit_level = EXIT_NONE;
|
||||
|
||||
//
|
||||
// TODO: execute pattern blocks.
|
||||
//
|
||||
/*
|
||||
* TODO: execute pattern blocks.
|
||||
*/
|
||||
|
||||
break;
|
||||
}
|
||||
@ -309,7 +309,7 @@ static int __run_block (xp_awk_t* awk, xp_awk_nde_blk_t* nde)
|
||||
p = nde->body;
|
||||
nlocals = nde->nlocals;
|
||||
|
||||
//xp_printf (XP_TEXT("securing space for local variables nlocals = %d\n"), nlocals);
|
||||
/*xp_printf (XP_TEXT("securing space for local variables nlocals = %d\n"), nlocals);*/
|
||||
saved_stack_top = awk->run.stack_top;
|
||||
|
||||
/* secure space for local variables */
|
||||
@ -326,7 +326,7 @@ static int __run_block (xp_awk_t* awk, xp_awk_nde_blk_t* nde)
|
||||
/* refupval is not required for xp_awk_val_nil */
|
||||
}
|
||||
|
||||
//xp_printf (XP_TEXT("executing block statements\n"));
|
||||
/*xp_printf (XP_TEXT("executing block statements\n"));*/
|
||||
while (p != XP_NULL && awk->run.exit_level == EXIT_NONE)
|
||||
{
|
||||
if (__run_statement(awk,p) == -1)
|
||||
@ -337,7 +337,7 @@ static int __run_block (xp_awk_t* awk, xp_awk_nde_blk_t* nde)
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
//xp_printf (XP_TEXT("popping off local variables\n"));
|
||||
/*xp_printf (XP_TEXT("popping off local variables\n"));*/
|
||||
/* pop off local variables */
|
||||
nlocals = nde->nlocals;
|
||||
while (nlocals > 0)
|
||||
@ -399,11 +399,11 @@ static int __run_statement (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
break;
|
||||
|
||||
case XP_AWK_NDE_NEXT:
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
break;
|
||||
|
||||
case XP_AWK_NDE_NEXTFILE:
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -432,18 +432,17 @@ static int __run_if_statement (xp_awk_t* awk, xp_awk_nde_if_t* nde)
|
||||
n = __run_statement (awk, nde->else_part);
|
||||
}
|
||||
|
||||
xp_awk_refdownval (awk, test); // TODO: is this correct?
|
||||
xp_awk_refdownval (awk, test); /* TODO: is this correct?*/
|
||||
return n;
|
||||
}
|
||||
|
||||
static int __run_while_statement (xp_awk_t* awk, xp_awk_nde_while_t* nde)
|
||||
{
|
||||
xp_awk_val_t* test;
|
||||
int n = 0;
|
||||
|
||||
if (nde->type == XP_AWK_NDE_WHILE)
|
||||
{
|
||||
// TODO: handle run-time abortion...
|
||||
/* TODO: handle run-time abortion... */
|
||||
while (1)
|
||||
{
|
||||
test = __eval_expression (awk, nde->test);
|
||||
@ -481,7 +480,7 @@ static int __run_while_statement (xp_awk_t* awk, xp_awk_nde_while_t* nde)
|
||||
}
|
||||
else if (nde->type == XP_AWK_NDE_DOWHILE)
|
||||
{
|
||||
// TODO: handle run-time abortion...
|
||||
/* TODO: handle run-time abortion... */
|
||||
do
|
||||
{
|
||||
if (__run_statement(awk,nde->body) == -1) return -1;
|
||||
@ -605,7 +604,7 @@ static int __run_return_statement (xp_awk_t* awk, xp_awk_nde_return_t* nde)
|
||||
if (nde->val != XP_NULL)
|
||||
{
|
||||
xp_awk_val_t* val;
|
||||
//xp_printf (XP_TEXT("returning....\n"));
|
||||
/*xp_printf (XP_TEXT("returning....\n"));*/
|
||||
val = __eval_expression(awk, nde->val);
|
||||
if (val == XP_NULL) return -1;
|
||||
|
||||
@ -613,7 +612,7 @@ static int __run_return_statement (xp_awk_t* awk, xp_awk_nde_return_t* nde)
|
||||
STACK_RETVAL(awk) = val;
|
||||
|
||||
xp_awk_refupval (val); /* see __eval_call for the trick */
|
||||
//xp_printf (XP_TEXT("set return value....\n"));
|
||||
/*xp_printf (XP_TEXT("set return value....\n"));*/
|
||||
}
|
||||
|
||||
awk->run.exit_level = EXIT_FUNCTION;
|
||||
@ -738,19 +737,19 @@ static xp_awk_val_t* __do_assignment (
|
||||
}
|
||||
else if (var->type == XP_AWK_NDE_NAMEDIDX)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
}
|
||||
else if (var->type == XP_AWK_NDE_GLOBALIDX)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
}
|
||||
else if (var->type == XP_AWK_NDE_LOCALIDX)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
}
|
||||
else if (var->type == XP_AWK_NDE_ARGIDX)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1309,7 +1308,7 @@ static xp_awk_val_t* __eval_binop_plus (
|
||||
{
|
||||
PANIC (awk, XP_AWK_EOPERAND);
|
||||
}
|
||||
// TODO: addition between integer and astring??? 1 + "123"
|
||||
/* TODO: addition between integer and astring??? 1 + "123" */
|
||||
|
||||
if (res == XP_NULL) PANIC (awk, XP_AWK_ENOMEM);
|
||||
return res;
|
||||
@ -1505,7 +1504,7 @@ static xp_awk_val_t* __eval_binop_exp (
|
||||
else if (left->type == XP_AWK_VAL_INT &&
|
||||
right->type == XP_AWK_VAL_REAL)
|
||||
{
|
||||
// TODO: write own pow...
|
||||
/* TODO: write own pow... */
|
||||
double x = ((xp_awk_val_int_t*)left)->val;
|
||||
double y = ((xp_awk_val_real_t*)right)->val;
|
||||
res = xp_awk_makerealval (awk, pow (x, y));
|
||||
@ -1513,7 +1512,7 @@ static xp_awk_val_t* __eval_binop_exp (
|
||||
else if (left->type == XP_AWK_VAL_REAL &&
|
||||
right->type == XP_AWK_VAL_INT)
|
||||
{
|
||||
// TODO: write own pow...
|
||||
/* TODO: write own pow... */
|
||||
double x = ((xp_awk_val_real_t*)left)->val;
|
||||
double y = ((xp_awk_val_int_t*)right)->val;
|
||||
res = xp_awk_makerealval (awk, pow (x, y));
|
||||
@ -1521,7 +1520,7 @@ static xp_awk_val_t* __eval_binop_exp (
|
||||
else if (left->type == XP_AWK_VAL_REAL &&
|
||||
right->type == XP_AWK_VAL_REAL)
|
||||
{
|
||||
// TODO: wirte own pow...
|
||||
/* TODO: wirte own pow... */
|
||||
double x = ((xp_awk_val_real_t*)left)->val;
|
||||
double y = ((xp_awk_val_real_t*)right)->val;
|
||||
res = xp_awk_makerealval (awk, pow (x, y));
|
||||
@ -1538,7 +1537,7 @@ static xp_awk_val_t* __eval_binop_exp (
|
||||
static xp_awk_val_t* __eval_binop_ma (
|
||||
xp_awk_t* awk, xp_awk_val_t* left, xp_awk_val_t* right)
|
||||
{
|
||||
// TODO: ...
|
||||
/* TODO: ... */
|
||||
PANIC (awk, XP_AWK_EINTERNAL);
|
||||
return XP_NULL;
|
||||
}
|
||||
@ -1546,7 +1545,7 @@ static xp_awk_val_t* __eval_binop_ma (
|
||||
static xp_awk_val_t* __eval_binop_nm (
|
||||
xp_awk_t* awk, xp_awk_val_t* left, xp_awk_val_t* right)
|
||||
{
|
||||
// TODO: ...
|
||||
/* TODO: ... */
|
||||
PANIC (awk, XP_AWK_EINTERNAL);
|
||||
return XP_NULL;
|
||||
}
|
||||
@ -1919,7 +1918,7 @@ static xp_awk_val_t* __eval_call (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
|
||||
saved_stack_top = awk->run.stack_top;
|
||||
|
||||
//xp_printf (XP_TEXT("setting up function stack frame stack_top = %ld stack_base = %ld\n"), awk->run.stack_top, awk->run.stack_base);
|
||||
/*xp_printf (XP_TEXT("setting up function stack frame stack_top = %ld stack_base = %ld\n"), awk->run.stack_top, awk->run.stack_base); */
|
||||
if (__raw_push(awk,(void*)awk->run.stack_base) == -1)
|
||||
{
|
||||
PANIC (awk, XP_AWK_ENOMEM);
|
||||
@ -1956,7 +1955,7 @@ static xp_awk_val_t* __eval_call (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
{
|
||||
while (nargs > 0)
|
||||
{
|
||||
// TODO: test this portion.
|
||||
/* TODO: test this portion. */
|
||||
--nargs;
|
||||
xp_awk_refdownval (awk, STACK_ARG(awk,nargs));
|
||||
__raw_pop (awk);
|
||||
@ -1979,7 +1978,7 @@ static xp_awk_val_t* __eval_call (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
|
||||
while (nargs > 0)
|
||||
{
|
||||
// TODO: test this portion.
|
||||
/* TODO: test this portion. */
|
||||
--nargs;
|
||||
xp_awk_refdownval (awk, STACK_ARG(awk,nargs));
|
||||
__raw_pop (awk);
|
||||
@ -2002,23 +2001,23 @@ static xp_awk_val_t* __eval_call (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
func = (xp_awk_func_t*)pair->val;
|
||||
xp_assert (func != XP_NULL);
|
||||
|
||||
// TODO: do i need to check if the number of arguments matches the actual arguments...???? this might be the compiler job...
|
||||
/* TODO: do i need to check if the number of arguments matches the actual arguments...???? this might be the compiler job... */
|
||||
|
||||
//xp_printf (XP_TEXT("running function body\n"));
|
||||
/*xp_printf (XP_TEXT("running function body\n")); */
|
||||
|
||||
xp_assert (func->body->type == XP_AWK_NDE_BLK);
|
||||
n = __run_block(awk,(xp_awk_nde_blk_t*)func->body);
|
||||
|
||||
//xp_printf (XP_TEXT("block run complete\n"));
|
||||
/*xp_printf (XP_TEXT("block run complete\n")); */
|
||||
|
||||
/* refdown args in the run.stack */
|
||||
nargs = (xp_size_t)STACK_NARGS(awk);
|
||||
//xp_printf (XP_TEXT("block run complete nargs = %d\n"), nargs);
|
||||
/*xp_printf (XP_TEXT("block run complete nargs = %d\n"), nargs); */
|
||||
for (i = 0; i < nargs; i++)
|
||||
{
|
||||
xp_awk_refdownval (awk, STACK_ARG(awk,i));
|
||||
}
|
||||
//xp_printf (XP_TEXT("got return value\n"));
|
||||
/*xp_printf (XP_TEXT("got return value\n")); */
|
||||
|
||||
/* this is the trick mentioned in __run_return_statement.
|
||||
* adjust the reference count of the return value.
|
||||
@ -2036,7 +2035,7 @@ static xp_awk_val_t* __eval_call (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
awk->run.exit_level = EXIT_NONE;
|
||||
}
|
||||
|
||||
//xp_printf (XP_TEXT("returning from function stack_top=%ld, stack_base=%ld\n"), awk->run.stack_top, awk->run.stack_base);
|
||||
/*xp_printf (XP_TEXT("returning from function stack_top=%ld, stack_base=%ld\n"), awk->run.stack_top, awk->run.stack_base); */
|
||||
return (n == -1)? XP_NULL: v;
|
||||
}
|
||||
|
||||
@ -2097,31 +2096,31 @@ static xp_awk_val_t* __eval_arg (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
|
||||
static xp_awk_val_t* __eval_namedidx (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
static xp_awk_val_t* __eval_globalidx (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
static xp_awk_val_t* __eval_localidx (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
static xp_awk_val_t* __eval_argidx (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
static xp_awk_val_t* __eval_pos (xp_awk_t* awk, xp_awk_nde_t* nde)
|
||||
{
|
||||
// TODO:
|
||||
/* TODO: */
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: tab.h,v 1.5 2006-03-07 15:55:14 bacon Exp $
|
||||
* $Id: tab.h,v 1.6 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_AWK_TAB_H_
|
||||
@ -16,8 +16,8 @@
|
||||
#include <xp/macros.h>
|
||||
#endif
|
||||
|
||||
// TODO: you have to turn this into a hash table.
|
||||
// as of now, this is an arrayed table.
|
||||
/* TODO: you have to turn this into a hash table.
|
||||
as of now, this is an arrayed table. */
|
||||
|
||||
typedef struct xp_awk_tab_t xp_awk_tab_t;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: tree.c,v 1.35 2006-04-12 03:54:12 bacon Exp $
|
||||
* $Id: tree.c,v 1.36 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/awk/awk_i.h>
|
||||
@ -142,7 +142,7 @@ static int __print_expression (xp_awk_nde_t* nde)
|
||||
xp_printf (XP_TEXT("%lld"), (long long)((xp_awk_nde_int_t*)nde)->val);
|
||||
#elif defined(__BORLANDC__) || defined(_MSC_VER)
|
||||
xp_printf (XP_TEXT("%I64d"), (__int64)((xp_awk_nde_int_t*)nde)->val);
|
||||
#elif defined(vax) || defined(__vax)
|
||||
#elif defined(vax) || defined(__vax) || defined(_SCO_DS)
|
||||
xp_printf (XP_TEXT("%ld"), (long)((xp_awk_nde_int_t*)nde)->val);
|
||||
#else
|
||||
xp_printf (XP_TEXT("%lld"), (long long)((xp_awk_nde_int_t*)nde)->val);
|
||||
@ -154,7 +154,7 @@ static int __print_expression (xp_awk_nde_t* nde)
|
||||
break;
|
||||
|
||||
case XP_AWK_NDE_STR:
|
||||
// TODO: buf, len
|
||||
/* TODO: buf, len */
|
||||
xp_printf (XP_TEXT("\"%s\""), ((xp_awk_nde_str_t*)nde)->buf);
|
||||
break;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: tree.h,v 1.31 2006-04-11 09:16:20 bacon Exp $
|
||||
* $Id: tree.h,v 1.32 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_AWK_TREE_H_
|
||||
@ -155,7 +155,7 @@ struct xp_awk_nde_str_t
|
||||
struct xp_awk_nde_var_t
|
||||
{
|
||||
XP_AWK_NDE_HDR;
|
||||
struct // union
|
||||
struct /* could it be union? */
|
||||
{
|
||||
xp_char_t* name;
|
||||
xp_size_t idxa;
|
||||
@ -165,7 +165,7 @@ struct xp_awk_nde_var_t
|
||||
struct xp_awk_nde_idx_t
|
||||
{
|
||||
XP_AWK_NDE_HDR;
|
||||
struct // union
|
||||
struct /* could it be union? */
|
||||
{
|
||||
xp_char_t* name;
|
||||
xp_size_t idxa;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: val.c,v 1.17 2006-04-07 04:23:11 bacon Exp $
|
||||
* $Id: val.c,v 1.18 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/awk/awk_i.h>
|
||||
@ -254,7 +254,7 @@ xp_bool_t xp_awk_boolval (xp_awk_val_t* val)
|
||||
|
||||
void xp_awk_printval (xp_awk_val_t* val)
|
||||
{
|
||||
// TODO: better value printing......................
|
||||
/* TODO: better value printing...................... */
|
||||
switch (val->type)
|
||||
{
|
||||
case XP_AWK_VAL_NIL:
|
||||
@ -268,7 +268,7 @@ void xp_awk_printval (xp_awk_val_t* val)
|
||||
#elif defined(__BORLANDC__) || defined(_MSC_VER)
|
||||
xp_printf (XP_TEXT("%I64d"),
|
||||
(__int64)((xp_awk_nde_int_t*)val)->val);
|
||||
#elif defined(vax) || defined(__vax)
|
||||
#elif defined(vax) || defined(__vax) || defined(_SCO_DS)
|
||||
xp_printf (XP_TEXT("%ld"),
|
||||
(long)((xp_awk_val_int_t*)val)->val);
|
||||
#else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: val.h,v 1.14 2006-04-07 04:23:11 bacon Exp $
|
||||
* $Id: val.h,v 1.15 2006-04-14 10:56:42 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_AWK_VAL_H_
|
||||
@ -66,7 +66,7 @@ struct xp_awk_val_str_t
|
||||
struct xp_awk_val_map_t
|
||||
{
|
||||
XP_AWK_VAL_HDR;
|
||||
//xp_awk_vap_t vap;
|
||||
/* xp_awk_vap_t vap; */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -81,7 +81,7 @@ xp_awk_val_t* xp_awk_makestrval (const xp_char_t* str, xp_size_t len);
|
||||
xp_awk_val_t* xp_awk_makestrval2 (
|
||||
const xp_char_t* str1, xp_size_t len1,
|
||||
const xp_char_t* str2, xp_size_t len2);
|
||||
//xp_awk_val_t* xp_awk_makemapval ();
|
||||
/*xp_awk_val_t* xp_awk_makemapval ();*/
|
||||
|
||||
xp_bool_t xp_awk_isbuiltinval (xp_awk_val_t* val);
|
||||
void xp_awk_freeval (xp_awk_t* awk, xp_awk_val_t* val);
|
||||
|
Loading…
x
Reference in New Issue
Block a user