*** empty log message ***

This commit is contained in:
hyung-hwan 2006-10-27 13:49:43 +00:00
parent 04c8643cc5
commit 04cb899351
4 changed files with 118 additions and 129 deletions

View File

@ -1,5 +1,5 @@
/* /*
* $Id: extio.c,v 1.57 2006-10-26 09:27:15 bacon Exp $ * $Id: extio.c,v 1.58 2006-10-27 13:49:43 bacon Exp $
*/ */
#include <ase/awk/awk_i.h> #include <ase/awk/awk_i.h>
@ -516,7 +516,7 @@ int ase_awk_flushextio (
{ {
ase_awk_extio_t* p = run->extio.chain; ase_awk_extio_t* p = run->extio.chain;
ase_awk_io_t handler; ase_awk_io_t handler;
int extio_type, extio_mode, extio_mask, n; int extio_type, /*extio_mode,*/ extio_mask, n;
ase_bool_t ok = ase_false; ase_bool_t ok = ase_false;
ASE_AWK_ASSERT (run->awk, ASE_AWK_ASSERT (run->awk,
@ -528,7 +528,7 @@ int ase_awk_flushextio (
/* translate the out_type into the relevant extio type and mode */ /* translate the out_type into the relevant extio type and mode */
extio_type = __out_type_map[out_type]; extio_type = __out_type_map[out_type];
extio_mode = __out_mode_map[out_type]; /*extio_mode = __out_mode_map[out_type];*/
extio_mask = __out_mask_map[out_type]; extio_mask = __out_mask_map[out_type];
handler = run->extio.handler[extio_type]; handler = run->extio.handler[extio_type];
@ -580,7 +580,7 @@ int ase_awk_nextextio_read (
{ {
ase_awk_extio_t* p = run->extio.chain; ase_awk_extio_t* p = run->extio.chain;
ase_awk_io_t handler; ase_awk_io_t handler;
int extio_type, extio_mode, extio_mask, n; int extio_type, /*extio_mode,*/ extio_mask, n;
ASE_AWK_ASSERT (run->awk, ASE_AWK_ASSERT (run->awk,
in_type >= 0 && in_type <= ase_countof(__in_type_map)); in_type >= 0 && in_type <= ase_countof(__in_type_map));
@ -591,7 +591,7 @@ int ase_awk_nextextio_read (
/* translate the in_type into the relevant extio type and mode */ /* translate the in_type into the relevant extio type and mode */
extio_type = __in_type_map[in_type]; extio_type = __in_type_map[in_type];
extio_mode = __in_mode_map[in_type]; /*extio_mode = __in_mode_map[in_type];*/
extio_mask = __in_mask_map[in_type]; extio_mask = __in_mask_map[in_type];
handler = run->extio.handler[extio_type]; handler = run->extio.handler[extio_type];
@ -632,7 +632,7 @@ int ase_awk_closeextio_read (
{ {
ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL; ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL;
ase_awk_io_t handler; ase_awk_io_t handler;
int extio_type, extio_mode, extio_mask; int extio_type, /*extio_mode,*/ extio_mask;
ASE_AWK_ASSERT (run->awk, ASE_AWK_ASSERT (run->awk,
in_type >= 0 && in_type <= ase_countof(__in_type_map)); in_type >= 0 && in_type <= ase_countof(__in_type_map));
@ -643,7 +643,7 @@ int ase_awk_closeextio_read (
/* translate the in_type into the relevant extio type and mode */ /* translate the in_type into the relevant extio type and mode */
extio_type = __in_type_map[in_type]; extio_type = __in_type_map[in_type];
extio_mode = __in_mode_map[in_type]; /*extio_mode = __in_mode_map[in_type];*/
extio_mask = __in_mask_map[in_type]; extio_mask = __in_mask_map[in_type];
handler = run->extio.handler[extio_type]; handler = run->extio.handler[extio_type];
@ -695,7 +695,7 @@ int ase_awk_closeextio_write (
{ {
ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL; ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL;
ase_awk_io_t handler; ase_awk_io_t handler;
int extio_type, extio_mode, extio_mask; int extio_type, /*extio_mode,*/ extio_mask;
ASE_AWK_ASSERT (run->awk, ASE_AWK_ASSERT (run->awk,
out_type >= 0 && out_type <= ase_countof(__out_type_map)); out_type >= 0 && out_type <= ase_countof(__out_type_map));
@ -706,7 +706,7 @@ int ase_awk_closeextio_write (
/* translate the out_type into the relevant extio type and mode */ /* translate the out_type into the relevant extio type and mode */
extio_type = __out_type_map[out_type]; extio_type = __out_type_map[out_type];
extio_mode = __out_mode_map[out_type]; /*extio_mode = __out_mode_map[out_type];*/
extio_mask = __out_mask_map[out_type]; extio_mask = __out_mask_map[out_type];
handler = run->extio.handler[extio_type]; handler = run->extio.handler[extio_type];

View File

@ -1,5 +1,5 @@
/* /*
* $Id: func.c,v 1.70 2006-10-26 09:27:15 bacon Exp $ * $Id: func.c,v 1.71 2006-10-27 13:49:43 bacon Exp $
*/ */
#include <ase/awk/awk_i.h> #include <ase/awk/awk_i.h>
@ -290,8 +290,6 @@ static int __bfn_fflush (ase_awk_run_t* run)
} }
/* flush the given extio */ /* flush the given extio */
n = 1;
n = __flush_extio ( n = __flush_extio (
run, ASE_AWK_EXTIO_FILE, run, ASE_AWK_EXTIO_FILE,
((len0 == 0)? ASE_NULL: str0), 1); ((len0 == 0)? ASE_NULL: str0), 1);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: parse.c,v 1.196 2006-10-26 14:21:40 bacon Exp $ * $Id: parse.c,v 1.197 2006-10-27 13:49:43 bacon Exp $
*/ */
#include <ase/awk/awk_i.h> #include <ase/awk/awk_i.h>
@ -1245,60 +1245,21 @@ awk->parse.nl_semicolon = 1;
nde = __parse_delete (awk); nde = __parse_delete (awk);
} }
else if (MATCH(awk,TOKEN_PRINT)) else if (MATCH(awk,TOKEN_PRINT))
{
if (__get_token(awk) == -1) return ASE_NULL;
if (MATCH (awk, TOKEN_LPAREN))
{ {
if (__get_token(awk) == -1) return ASE_NULL; if (__get_token(awk) == -1) return ASE_NULL;
nde = __parse_print (awk); nde = __parse_print (awk);
if (nde == ASE_NULL) return ASE_NULL;
if (!MATCH (awk, TOKEN_RPAREN))
{
ase_awk_clrpt (awk, nde);
PANIC (awk, ASE_AWK_ERPAREN);
}
if (__get_token(awk) == -1)
{
ase_awk_clrpt (awk, nde);
return ASE_NULL;
}
}
else
{
nde = __parse_print (awk);
}
} }
else if (MATCH(awk,TOKEN_PRINTF)) else if (MATCH(awk,TOKEN_PRINTF))
{
if (__get_token(awk) == -1) return ASE_NULL;
if (MATCH (awk, TOKEN_LPAREN))
{ {
if (__get_token(awk) == -1) return ASE_NULL; if (__get_token(awk) == -1) return ASE_NULL;
nde = __parse_printf (awk); nde = __parse_printf (awk);
if (nde == ASE_NULL) return ASE_NULL;
if (!MATCH (awk, TOKEN_RPAREN))
{
ase_awk_clrpt (awk, nde);
PANIC (awk, ASE_AWK_ERPAREN);
}
if (__get_token(awk) == -1)
{
ase_awk_clrpt (awk, nde);
return ASE_NULL;
}
}
else
{
nde = __parse_printf (awk);
}
} }
else else
{ {
nde = __parse_expression(awk); nde = __parse_expression(awk);
} }
/* TODO: newline ... */
awk->parse.nl_semicolon = 0; awk->parse.nl_semicolon = 0;
if (nde == ASE_NULL) return ASE_NULL; if (nde == ASE_NULL) return ASE_NULL;
@ -2232,7 +2193,9 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk)
ase_awk_nde_grp_t* tmp; ase_awk_nde_grp_t* tmp;
if (!MATCH(awk,TOKEN_IN)) /* TODO: how to handle this situation??? */
if (/*!MATCH(awk,TOKEN_SEMICOLON) &&*/
!MATCH(awk,TOKEN_IN))
{ {
ase_awk_clrpt (awk, nde); ase_awk_clrpt (awk, nde);
PANIC (awk, ASE_AWK_EIN); PANIC (awk, ASE_AWK_EIN);
@ -2310,7 +2273,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk)
} }
/* valid expression introducer is expected */ /* valid expression introducer is expected */
PANIC (awk, ASE_AWK_EEXPRESSION); awk->errnum = ASE_AWK_EEXPRESSION;
return ASE_NULL;
} }
static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk) static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk)
@ -2325,7 +2289,11 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk)
awk, awk,
ASE_AWK_STR_BUF(&awk->token.name), ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name)); ASE_AWK_STR_LEN(&awk->token.name));
if (name_dup == ASE_NULL) PANIC (awk, ASE_AWK_ENOMEM); if (name_dup == ASE_NULL)
{
awk->errnum = ASE_AWK_ENOMEM;
return ASE_NULL;
}
name_len = ASE_AWK_STR_LEN(&awk->token.name); name_len = ASE_AWK_STR_LEN(&awk->token.name);
if (__get_token(awk) == -1) if (__get_token(awk) == -1)
@ -2345,7 +2313,8 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk)
{ {
/* built-in function should be in the form /* built-in function should be in the form
* of the function call */ * of the function call */
PANIC (awk, ASE_AWK_ELPAREN); awk->errnum = ASE_AWK_ELPAREN;
return ASE_NULL;
} }
nde = __parse_fncall (awk, ASE_NULL, 0, bfn); nde = __parse_fncall (awk, ASE_NULL, 0, bfn);
@ -2379,7 +2348,8 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk)
if (nde == ASE_NULL) if (nde == ASE_NULL)
{ {
ASE_AWK_FREE (awk, name_dup); ASE_AWK_FREE (awk, name_dup);
PANIC (awk, ASE_AWK_ENOMEM); awk->errnum = ASE_AWK_ENOMEM;
return ASE_NULL;
} }
/* search the parameter name list */ /* search the parameter name list */
@ -2445,7 +2415,9 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk)
/* undefined variable */ /* undefined variable */
ASE_AWK_FREE (awk, name_dup); ASE_AWK_FREE (awk, name_dup);
ASE_AWK_FREE (awk, nde); ASE_AWK_FREE (awk, nde);
PANIC (awk, ASE_AWK_EUNDEF);
awk->errnum = ASE_AWK_EUNDEF;
return ASE_NULL;
} }
} }
@ -2501,11 +2473,13 @@ static ase_awk_nde_t* __parse_hashidx (
return ASE_NULL; return ASE_NULL;
} }
nde = (ase_awk_nde_var_t*) ASE_AWK_MALLOC (awk, ase_sizeof(ase_awk_nde_var_t)); nde = (ase_awk_nde_var_t*)
ASE_AWK_MALLOC (awk, ase_sizeof(ase_awk_nde_var_t));
if (nde == ASE_NULL) if (nde == ASE_NULL)
{ {
ase_awk_clrpt (awk, idx); ase_awk_clrpt (awk, idx);
PANIC (awk, ASE_AWK_ENOMEM); awk->errnum = ASE_AWK_ENOMEM;
return ASE_NULL;
} }
/* search the parameter name list */ /* search the parameter name list */
@ -2568,7 +2542,9 @@ static ase_awk_nde_t* __parse_hashidx (
/* undefined variable */ /* undefined variable */
ase_awk_clrpt (awk, idx); ase_awk_clrpt (awk, idx);
ASE_AWK_FREE (awk, nde); ASE_AWK_FREE (awk, nde);
PANIC (awk, ASE_AWK_EUNDEF);
awk->errnum = ASE_AWK_EUNDEF;
return ASE_NULL;
} }
static ase_awk_nde_t* __parse_fncall ( static ase_awk_nde_t* __parse_fncall (
@ -3131,8 +3107,6 @@ static ase_awk_nde_t* __parse_print (ase_awk_t* awk)
{ {
ase_awk_nde_print_t* nde; ase_awk_nde_print_t* nde;
ase_awk_nde_t* args = ASE_NULL; ase_awk_nde_t* args = ASE_NULL;
ase_awk_nde_t* args_tail = ASE_NULL;
ase_awk_nde_t* tail_prev = ASE_NULL;
ase_awk_nde_t* out = ASE_NULL; ase_awk_nde_t* out = ASE_NULL;
int out_type; int out_type;
@ -3142,6 +3116,9 @@ static ase_awk_nde_t* __parse_print (ase_awk_t* awk)
!MATCH(awk,TOKEN_BOR) && !MATCH(awk,TOKEN_BOR) &&
!MATCH(awk,TOKEN_BORAND)) !MATCH(awk,TOKEN_BORAND))
{ {
ase_awk_nde_t* args_tail;
ase_awk_nde_t* tail_prev;
args = __parse_expression (awk); args = __parse_expression (awk);
if (args == ASE_NULL) return ASE_NULL; if (args == ASE_NULL) return ASE_NULL;
@ -3240,7 +3217,8 @@ static ase_awk_nde_t* __parse_print (ase_awk_t* awk)
} }
} }
nde = (ase_awk_nde_print_t*) ASE_AWK_MALLOC (awk, ase_sizeof(ase_awk_nde_print_t)); nde = (ase_awk_nde_print_t*)
ASE_AWK_MALLOC (awk, ase_sizeof(ase_awk_nde_print_t));
if (nde == ASE_NULL) if (nde == ASE_NULL)
{ {
if (args != ASE_NULL) ase_awk_clrpt (awk, args); if (args != ASE_NULL) ase_awk_clrpt (awk, args);
@ -3406,7 +3384,7 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_EQ); SET_TOKEN_TYPE (awk, TOKEN_EQ);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3421,13 +3399,13 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_NE); SET_TOKEN_TYPE (awk, TOKEN_NE);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('~')) else if (c == ASE_T('~'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_NM); SET_TOKEN_TYPE (awk, TOKEN_NM);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3442,13 +3420,13 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_RSHIFT); SET_TOKEN_TYPE (awk, TOKEN_RSHIFT);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('=')) else if (c == ASE_T('='))
{ {
SET_TOKEN_TYPE (awk, TOKEN_GE); SET_TOKEN_TYPE (awk, TOKEN_GE);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3464,13 +3442,13 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_LSHIFT); SET_TOKEN_TYPE (awk, TOKEN_LSHIFT);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('=')) else if (c == ASE_T('='))
{ {
SET_TOKEN_TYPE (awk, TOKEN_LE); SET_TOKEN_TYPE (awk, TOKEN_LE);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3485,13 +3463,13 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_LOR); SET_TOKEN_TYPE (awk, TOKEN_LOR);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('&')) else if (c == ASE_T('&'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_BORAND); SET_TOKEN_TYPE (awk, TOKEN_BORAND);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3506,7 +3484,7 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_LAND); SET_TOKEN_TYPE (awk, TOKEN_LAND);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3517,13 +3495,13 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_TILDE); SET_TOKEN_TYPE (awk, TOKEN_TILDE);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('^')) else if (c == ASE_T('^'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_BXOR); SET_TOKEN_TYPE (awk, TOKEN_BXOR);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('+')) else if (c == ASE_T('+'))
{ {
@ -3533,13 +3511,13 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_PLUSPLUS); SET_TOKEN_TYPE (awk, TOKEN_PLUSPLUS);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('=')) else if (c == ASE_T('='))
{ {
SET_TOKEN_TYPE (awk, TOKEN_PLUS_ASSIGN); SET_TOKEN_TYPE (awk, TOKEN_PLUS_ASSIGN);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3554,13 +3532,13 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_MINUSMINUS); SET_TOKEN_TYPE (awk, TOKEN_MINUSMINUS);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('=')) else if (c == ASE_T('='))
{ {
SET_TOKEN_TYPE (awk, TOKEN_MINUS_ASSIGN); SET_TOKEN_TYPE (awk, TOKEN_MINUS_ASSIGN);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3576,7 +3554,7 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_MUL_ASSIGN); SET_TOKEN_TYPE (awk, TOKEN_MUL_ASSIGN);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('*')) else if (c == ASE_T('*'))
{ {
@ -3586,7 +3564,7 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_EXP_ASSIGN); SET_TOKEN_TYPE (awk, TOKEN_EXP_ASSIGN);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3607,7 +3585,7 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_DIV_ASSIGN); SET_TOKEN_TYPE (awk, TOKEN_DIV_ASSIGN);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3623,7 +3601,7 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_MOD_ASSIGN); SET_TOKEN_TYPE (awk, TOKEN_MOD_ASSIGN);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3634,55 +3612,55 @@ static int __get_token (ase_awk_t* awk)
{ {
SET_TOKEN_TYPE (awk, TOKEN_LPAREN); SET_TOKEN_TYPE (awk, TOKEN_LPAREN);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T(')')) else if (c == ASE_T(')'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_RPAREN); SET_TOKEN_TYPE (awk, TOKEN_RPAREN);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('{')) else if (c == ASE_T('{'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_LBRACE); SET_TOKEN_TYPE (awk, TOKEN_LBRACE);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('}')) else if (c == ASE_T('}'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_RBRACE); SET_TOKEN_TYPE (awk, TOKEN_RBRACE);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('[')) else if (c == ASE_T('['))
{ {
SET_TOKEN_TYPE (awk, TOKEN_LBRACK); SET_TOKEN_TYPE (awk, TOKEN_LBRACK);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T(']')) else if (c == ASE_T(']'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_RBRACK); SET_TOKEN_TYPE (awk, TOKEN_RBRACK);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('$')) else if (c == ASE_T('$'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_DOLLAR); SET_TOKEN_TYPE (awk, TOKEN_DOLLAR);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T(',')) else if (c == ASE_T(','))
{ {
SET_TOKEN_TYPE (awk, TOKEN_COMMA); SET_TOKEN_TYPE (awk, TOKEN_COMMA);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('.')) else if (c == ASE_T('.'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_PERIOD); SET_TOKEN_TYPE (awk, TOKEN_PERIOD);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T(';') || else if (c == ASE_T(';') ||
(c == ASE_T('\n') && (awk->option & ASE_AWK_NEWLINE))) (c == ASE_T('\n') && (awk->option & ASE_AWK_NEWLINE)))
@ -3690,19 +3668,19 @@ static int __get_token (ase_awk_t* awk)
/* TODO: more check on the newline terminator... */ /* TODO: more check on the newline terminator... */
SET_TOKEN_TYPE (awk, TOKEN_SEMICOLON); SET_TOKEN_TYPE (awk, TOKEN_SEMICOLON);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T(':')) else if (c == ASE_T(':'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_COLON); SET_TOKEN_TYPE (awk, TOKEN_COLON);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else if (c == ASE_T('?')) else if (c == ASE_T('?'))
{ {
SET_TOKEN_TYPE (awk, TOKEN_QUEST); SET_TOKEN_TYPE (awk, TOKEN_QUEST);
ADD_TOKEN_CHAR (awk, c); ADD_TOKEN_CHAR (awk, c);
GET_CHAR_TO (awk, c); GET_CHAR (awk);
} }
else else
{ {
@ -3843,7 +3821,7 @@ static int __get_string (
ase_cint_t c; ase_cint_t c;
int escaped = 0; int escaped = 0;
int digit_count = 0; int digit_count = 0;
ase_cint_t c_acc; ase_cint_t c_acc = 0;
while (1) while (1)
{ {
@ -3926,7 +3904,8 @@ static int __get_string (
if (escaped == 0 && c == end_char) if (escaped == 0 && c == end_char)
{ {
/* terminating quote */ /* terminating quote */
GET_CHAR_TO (awk, c); /*GET_CHAR_TO (awk, c);*/
GET_CHAR (awk);
break; break;
} }
@ -4113,7 +4092,8 @@ static int __skip_comment (ase_awk_t* awk)
if (c == ASE_T('/')) if (c == ASE_T('/'))
{ {
GET_CHAR_TO (awk, c); /*GET_CHAR_TO (awk, c);*/
GET_CHAR (awk);
break; break;
} }
} }
@ -4334,7 +4314,7 @@ exit_deparse:
} }
} }
return 0; return n;
} }
static int __deparse_func (ase_awk_pair_t* pair, void* arg) static int __deparse_func (ase_awk_pair_t* pair, void* arg)

View File

@ -1,5 +1,5 @@
/* /*
* $Id: run.c,v 1.245 2006-10-27 11:04:16 bacon Exp $ * $Id: run.c,v 1.246 2006-10-27 13:49:43 bacon Exp $
*/ */
#include <ase/awk/awk_i.h> #include <ase/awk/awk_i.h>
@ -807,7 +807,7 @@ static void __deinit_run (ase_awk_run_t* run)
static int __build_runarg (ase_awk_run_t* run, ase_awk_runarg_t* runarg) static int __build_runarg (ase_awk_run_t* run, ase_awk_runarg_t* runarg)
{ {
ase_awk_runarg_t* p = runarg; ase_awk_runarg_t* p;
ase_size_t argc; ase_size_t argc;
ase_awk_val_t* v_argc; ase_awk_val_t* v_argc;
ase_awk_val_t* v_argv; ase_awk_val_t* v_argv;
@ -2943,67 +2943,78 @@ static ase_awk_val_t* __eval_binop_in (
static ase_awk_val_t* __eval_binop_bor ( static ase_awk_val_t* __eval_binop_bor (
ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right)
{ {
ase_awk_val_t* res = ASE_NULL;
if (left->type == ASE_AWK_VAL_INT && if (left->type == ASE_AWK_VAL_INT &&
right->type == ASE_AWK_VAL_INT) right->type == ASE_AWK_VAL_INT)
{ {
ase_awk_val_t* res;
ase_long_t r = ase_long_t r =
((ase_awk_val_int_t*)left)->val | ((ase_awk_val_int_t*)left)->val |
((ase_awk_val_int_t*)right)->val; ((ase_awk_val_int_t*)right)->val;
res = ase_awk_makeintval (run, r); res = ase_awk_makeintval (run, r);
}
else if (res == ASE_NULL)
{ {
PANIC (run, ASE_AWK_EOPERAND); run->errnum = ASE_AWK_ENOMEM;
return ASE_NULL;
} }
if (res == ASE_NULL) PANIC (run, ASE_AWK_ENOMEM);
return res; return res;
}
run->errnum = ASE_AWK_EOPERAND;
return ASE_NULL;
} }
static ase_awk_val_t* __eval_binop_bxor ( static ase_awk_val_t* __eval_binop_bxor (
ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right)
{ {
ase_awk_val_t* res = ASE_NULL;
if (left->type == ASE_AWK_VAL_INT && if (left->type == ASE_AWK_VAL_INT &&
right->type == ASE_AWK_VAL_INT) right->type == ASE_AWK_VAL_INT)
{ {
ase_awk_val_t* res;
ase_long_t r = ase_long_t r =
((ase_awk_val_int_t*)left)->val ^ ((ase_awk_val_int_t*)left)->val ^
((ase_awk_val_int_t*)right)->val; ((ase_awk_val_int_t*)right)->val;
res = ase_awk_makeintval (run, r); res = ase_awk_makeintval (run, r);
}
else if (res == ASE_NULL)
{ {
PANIC (run, ASE_AWK_EOPERAND); run->errnum = ASE_AWK_ENOMEM;
return ASE_NULL;
} }
if (res == ASE_NULL) PANIC (run, ASE_AWK_ENOMEM);
return res; return res;
}
run->errnum = ASE_AWK_EOPERAND;
return ASE_NULL;
} }
static ase_awk_val_t* __eval_binop_band ( static ase_awk_val_t* __eval_binop_band (
ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right)
{ {
ase_awk_val_t* res = ASE_NULL;
if (left->type == ASE_AWK_VAL_INT && if (left->type == ASE_AWK_VAL_INT &&
right->type == ASE_AWK_VAL_INT) right->type == ASE_AWK_VAL_INT)
{ {
ase_awk_val_t* res;
ase_long_t r = ase_long_t r =
((ase_awk_val_int_t*)left)->val & ((ase_awk_val_int_t*)left)->val &
((ase_awk_val_int_t*)right)->val; ((ase_awk_val_int_t*)right)->val;
res = ase_awk_makeintval (run, r); res = ase_awk_makeintval (run, r);
}
else if (res == ASE_NULL)
{ {
PANIC (run, ASE_AWK_EOPERAND); run->errnum = ASE_AWK_ENOMEM;
return ASE_NULL;
} }
if (res == ASE_NULL) PANIC (run, ASE_AWK_ENOMEM);
return res; return res;
}
run->errnum = ASE_AWK_EOPERAND;
return ASE_NULL;
} }
static int __cmp_nil_nil ( static int __cmp_nil_nil (