*** empty log message ***
This commit is contained in:
		@ -203,6 +203,14 @@ SOURCE=.\err.c
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=.\extio.c
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=.\func.c
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=.\map.c
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
@ -247,6 +255,10 @@ SOURCE=.\awk_i.h
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=.\func.h
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=.\map.h
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/* 
 | 
			
		||||
 * $Id: awk.h,v 1.62 2006-06-16 07:35:06 bacon Exp $
 | 
			
		||||
 * $Id: awk.h,v 1.63 2006-06-18 10:53:06 bacon Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _XP_AWK_AWK_H_
 | 
			
		||||
@ -91,6 +91,7 @@ enum
 | 
			
		||||
	XP_AWK_EUNDEF,         /* undefined identifier */
 | 
			
		||||
	XP_AWK_ELVALUE,        /* l-value required */
 | 
			
		||||
	XP_AWK_ETOOMANYARGS,   /* too many arguments */
 | 
			
		||||
	XP_AWK_EGETLINE,       /* getline expected */
 | 
			
		||||
 | 
			
		||||
	/* run time error */
 | 
			
		||||
	XP_AWK_EDIVBYZERO,     /* divide by zero */
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * $Id: err.c,v 1.19 2006-06-16 07:35:07 bacon Exp $
 | 
			
		||||
 * $Id: err.c,v 1.20 2006-06-18 10:53:06 bacon Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <xp/awk/awk_i.h>
 | 
			
		||||
@ -56,6 +56,7 @@ const xp_char_t* xp_awk_geterrstr (xp_awk_t* awk)
 | 
			
		||||
		XP_T("undefined identifier"),
 | 
			
		||||
		XP_T("l-value required"),
 | 
			
		||||
		XP_T("too many arguments"),
 | 
			
		||||
		XP_T("getline expected"),
 | 
			
		||||
 | 
			
		||||
		XP_T("divide by zero"),
 | 
			
		||||
		XP_T("invalid operand"),
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * $Id: parse.c,v 1.114 2006-06-16 14:31:42 bacon Exp $
 | 
			
		||||
 * $Id: parse.c,v 1.115 2006-06-18 10:53:06 bacon Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <xp/awk/awk_i.h>
 | 
			
		||||
@ -44,6 +44,7 @@ enum
 | 
			
		||||
	TOKEN_BOR,
 | 
			
		||||
	TOKEN_BXOR,
 | 
			
		||||
	TOKEN_BAND,
 | 
			
		||||
	TOKEN_BORAND,
 | 
			
		||||
	TOKEN_TILDE, /* used for unary bitwise-not and regex match */
 | 
			
		||||
	TOKEN_RSHIFT,
 | 
			
		||||
	TOKEN_LSHIFT,
 | 
			
		||||
@ -1455,7 +1456,13 @@ static xp_awk_nde_t* __parse_bitwise_or (xp_awk_t* awk)
 | 
			
		||||
 | 
			
		||||
	while (1)
 | 
			
		||||
	{
 | 
			
		||||
		if (!MATCH(awk,TOKEN_BOR)) break;
 | 
			
		||||
		int in_type;
 | 
			
		||||
 | 
			
		||||
		if (MATCH(awk,TOKEN_BOR)) 
 | 
			
		||||
			in_type = XP_AWK_GETLINE_PIPE;
 | 
			
		||||
		else if (MATCH(awk,TOKEN_BORAND)) 
 | 
			
		||||
			in_type = XP_AWK_GETLINE_COPROC;
 | 
			
		||||
		else break;
 | 
			
		||||
		
 | 
			
		||||
		if (__get_token(awk) == -1)
 | 
			
		||||
		{
 | 
			
		||||
@ -1500,7 +1507,7 @@ static xp_awk_nde_t* __parse_bitwise_or (xp_awk_t* awk)
 | 
			
		||||
			nde->type = XP_AWK_NDE_GETLINE;
 | 
			
		||||
			nde->next = XP_NULL;
 | 
			
		||||
			nde->var = var;
 | 
			
		||||
			nde->in_type = XP_AWK_GETLINE_PIPE;
 | 
			
		||||
			nde->in_type = in_type;
 | 
			
		||||
			nde->in = left;
 | 
			
		||||
 | 
			
		||||
			left = (xp_awk_nde_t*)nde;
 | 
			
		||||
@ -1509,6 +1516,12 @@ static xp_awk_nde_t* __parse_bitwise_or (xp_awk_t* awk)
 | 
			
		||||
		{
 | 
			
		||||
			xp_awk_nde_exp_t* nde;
 | 
			
		||||
 | 
			
		||||
			if (in_type == XP_AWK_GETLINE_COPROC)
 | 
			
		||||
			{
 | 
			
		||||
				xp_awk_clrpt (left);
 | 
			
		||||
				PANIC (awk, XP_AWK_EGETLINE);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			right = __parse_bitwise_xor (awk);
 | 
			
		||||
			if (right == XP_NULL)
 | 
			
		||||
			{
 | 
			
		||||
@ -2762,7 +2775,8 @@ static xp_awk_nde_t* __parse_print (xp_awk_t* awk)
 | 
			
		||||
	/* TODO: expression list............ */
 | 
			
		||||
	if (!MATCH(awk,TOKEN_SEMICOLON) &&
 | 
			
		||||
	    !MATCH(awk,TOKEN_GT) &&
 | 
			
		||||
	    !MATCH(awk,TOKEN_BOR)) 
 | 
			
		||||
	    !MATCH(awk,TOKEN_BOR) &&
 | 
			
		||||
	    !MATCH(awk,TOKEN_BORAND)) 
 | 
			
		||||
	{
 | 
			
		||||
		args = __parse_expression (awk);
 | 
			
		||||
		if (args == XP_NULL) return XP_NULL;
 | 
			
		||||
@ -2776,6 +2790,10 @@ static xp_awk_nde_t* __parse_print (xp_awk_t* awk)
 | 
			
		||||
	{
 | 
			
		||||
		out_type = XP_AWK_PRINT_PIPE;
 | 
			
		||||
	}
 | 
			
		||||
	else if (MATCH(awk,TOKEN_BORAND))
 | 
			
		||||
	{
 | 
			
		||||
		out_type = XP_AWK_PRINT_COPROC;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (out_type != -1)
 | 
			
		||||
	{
 | 
			
		||||
@ -2989,6 +3007,12 @@ static int __get_token (xp_awk_t* awk)
 | 
			
		||||
			ADD_TOKEN_STR (awk, XP_T("||"));
 | 
			
		||||
			GET_CHAR_TO (awk, c);
 | 
			
		||||
		}
 | 
			
		||||
		else if (c == XP_T('&'))
 | 
			
		||||
		{
 | 
			
		||||
			SET_TOKEN_TYPE (awk, TOKEN_BORAND);
 | 
			
		||||
			ADD_TOKEN_STR (awk, XP_T("|&"));
 | 
			
		||||
			GET_CHAR_TO (awk, c);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			SET_TOKEN_TYPE (awk, TOKEN_BOR);
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * $Id: run.c,v 1.96 2006-06-16 07:35:07 bacon Exp $
 | 
			
		||||
 * $Id: run.c,v 1.97 2006-06-18 10:53:06 bacon Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <xp/awk/awk_i.h>
 | 
			
		||||
@ -2881,9 +2881,14 @@ static xp_awk_val_t* __eval_getline (xp_awk_run_t* run, xp_awk_nde_t* nde)
 | 
			
		||||
 | 
			
		||||
		return xp_awk_makeintval (run, n);
 | 
			
		||||
	}
 | 
			
		||||
	else if (p->in_type == XP_AWK_GETLINE_COPROC)
 | 
			
		||||
	{
 | 
			
		||||
		xp_printf (XP_T("eval_getline coprocess not properly implemented....\n"));
 | 
			
		||||
		return XP_NULL;
 | 
			
		||||
	}
 | 
			
		||||
	else if (p->in_type == XP_AWK_GETLINE_FILE)
 | 
			
		||||
	{
 | 
			
		||||
		xp_printf (XP_T("eval_getline not properly implemented....\n"));
 | 
			
		||||
		xp_printf (XP_T("eval_getline file not properly implemented....\n"));
 | 
			
		||||
		return XP_NULL;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * $Id: tree.c,v 1.53 2006-06-13 15:11:39 bacon Exp $
 | 
			
		||||
 * $Id: tree.c,v 1.54 2006-06-18 10:53:06 bacon Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <xp/awk/awk_i.h>
 | 
			
		||||
@ -71,12 +71,14 @@ static const xp_char_t* __incop_str[] =
 | 
			
		||||
static const xp_char_t* __getline_inop_str[] =
 | 
			
		||||
{
 | 
			
		||||
	XP_T("|"),
 | 
			
		||||
	XP_T("|&"),
 | 
			
		||||
	XP_T("<")
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static const xp_char_t* __print_outop_str[] =
 | 
			
		||||
{
 | 
			
		||||
	XP_T("|"),
 | 
			
		||||
	XP_T("|&"),
 | 
			
		||||
	XP_T(">")
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -351,7 +353,8 @@ static int __print_expression (xp_awk_nde_t* nde)
 | 
			
		||||
			  /* TODO */
 | 
			
		||||
			xp_awk_nde_getline_t* px = (xp_awk_nde_getline_t*)nde;
 | 
			
		||||
			if (px->in != XP_NULL &&
 | 
			
		||||
			    px->in_type == XP_AWK_GETLINE_PIPE)
 | 
			
		||||
			    (px->in_type == XP_AWK_GETLINE_PIPE ||
 | 
			
		||||
			     px->in_type == XP_AWK_GETLINE_COPROC))
 | 
			
		||||
			{
 | 
			
		||||
				__print_expression (px->in);
 | 
			
		||||
				xp_printf (XP_T(" %s "), 
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * $Id: tree.h,v 1.44 2006-06-13 15:11:39 bacon Exp $
 | 
			
		||||
 * $Id: tree.h,v 1.45 2006-06-18 10:53:06 bacon Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _XP_AWK_TREE_H_
 | 
			
		||||
@ -60,12 +60,14 @@ enum
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
	XP_AWK_GETLINE_PIPE,
 | 
			
		||||
	XP_AWK_GETLINE_COPROC,
 | 
			
		||||
	XP_AWK_GETLINE_FILE
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
	XP_AWK_PRINT_PIPE,
 | 
			
		||||
	XP_AWK_PRINT_COPROC,
 | 
			
		||||
	XP_AWK_PRINT_FILE
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user